将GDK3开发成一个有趣的U盘
1.背景和基本目标
编写固件,将GDK3开发成一个具有奇异功能的U盘(UDisk)。
2. 根据本系列之一的提示搭建试验环境和下载GDK3 SDK
https://gedu.oss-cn-beijing.aliyuncs.com/Products/GDK3/sdk_v20240524.zip
3. 执行如下步骤构建gedisk固件
下面是编译过程需执行的命令,请注意这些命令中的路径要根据你自己的环境做调整!!!如有疑惑,可以看看GDK3上手系列之三。
下面是编译示例操作:
设置工具链的路径
export PATH=/d/GnuArmToolchain/bin/:$PATH
切换到gedisk目录下,编译gedisk目录下的代码
cd /d/work/gdk3sdk/src/gedisk
输入make进行构建
make
4. 将编译好的固件烧录到GDK3
下面是烧录操作的参考步骤:将gedisk.hex烧录到gdk3
!program D:\\work\\gdk3sdk\\src\\gedisk\\gedisk.hex
重启gdk3
!reset
5 测试效果
将GDK3的USB1口连到计算机(上位机),看是否可以成功识别到U盘,识别成功的话,下图的e盘就是我们的GDK3啦,现在我们来读取一下GDK3中的文件,将GDK3中的文件复制到我们的电脑上。
补充一下哈:GDK3的USB1接口既可以是主机模式又可以是设备模式,简称USBHD,USB2接口只能工作在设备模式。增强功能之数据加密
修改写闪存的代码,将数据与固定的密钥GEDU2018做XOR(异或)操作,这样写到U盘上的数据再读出来就是乱码,在进行一次异或的话就可以解密。
给大家看一下数据“abcdefghigk12345678910”进行加密和解密操作后的结果:#include <iostream> using namespace std; #define MAXSIZE 100 void INCODE(char* str1,int n) { uint8_t i; char b[] = "GEDU2018"; for (i = 0; i < n; i++) { str1[i] = str1[i] ^ b[i%8]; cout << str1[i]; } cout << endl; } void DECODE(char* str2,int n) { uint8_t i; char b[] = "GEDU2018"; for (i = 0; i <n; i++) { str2[i] = str2[i] ^ b[i%8]; cout << str2[i]; } cout << endl; } int main() { char a[MAXSIZE]="abcdefghigk12345678910"; int n = strlen(a); INCODE(a,n); DECODE(a,n); return 0; }
注意哦:如果我们要加密的数据长度如果超过8个字节的话,就会越界,因为密钥只有八个字节,所以密钥相当于反复在8个字节里循环,这样就需要我们来做一个取余的操作。
想看具体的操作的话,可以点击下面的链接,观看视频讲解。
https://www.bilibili.com/video/BV1aW4y1u728/
作者:Zhang Yinkui 创建时间:2022-12-16 09:46
最后编辑:Zhang Yinkui 更新时间:2024-05-24 22:54
最后编辑:Zhang Yinkui 更新时间:2024-05-24 22:54