使用GDK3开发魔法键盘心得
前言
GDK3(GEDU Development Kit 3)是格蠹科技旗下基于ARM Cortex-M3 SoC设计的开发板,CPU框架是ARMv7-M。搭配公司其他相关软硬件工具,我们可以使用它来学习ARM和嵌入式,产品体积小,功耗低,且功能非常强大。
一、开发目标
把GDK3开发成一个特殊的键盘设备,自动发送键盘事件,这时从用户的角度看:电脑的键盘像会魔法一样自己打字,非常好玩有趣。
连接示意图
工作流程
正常来说键盘应该是从上位机发送到下位机,但我们这里修改GDK3中运行的程序,直接让GDK3自主的发送键盘事件,不使用上位机,并在下位机进行接收和测试
二、开发过程
1. 引入gekm项目源码,我们在gekm项目的基础上开发。
2. 测试原本的gekm项目,只有当原本的项目功能和逻辑均正确时,我们才可以在在他基础上开发新项目。
a. 打开GNU工具来编译
b. 引入gcc gdb等编译调试工具的路径:
export PATH=/d/gedu_work/GNU/bin/:$PATH
c. 切换到项目所在的工作目录:
cd /d/gedu_work/gdk3/sdk/src/gekm/
d. 开始编译
make -s
e. 烧录运行
!program D:\\gedu_work\\gdk3\\sdk\\src\\gekm\\gekm.hex
!reset
f. 检查GDK3是否可以作为usb设备被识别
打开usbview软件,观察主机接入GKD3的USB端口。(usbview 是一个usb设备查看器,能够对系统中全部的USB设备进行枚举,可以查看每个设备的详细信息)。
g. 至此,测试完毕,原本的gekm项目一切正常。
3. 测试完毕之后,我们可以在项目原有的基础上开发魔法键盘项目了。
a. 编写自己的键盘发送函数,并在主函数中调用这个发送函数。
void KB_Send_Data(void)
{
// 测试发送 gedu
uint8_t KB_Data[8] = {0, 0, KC_G, KC_E, KC_D, KC_U, 0, 0};
uint8_t KB_Empty[8] = {0};
// 开始发送数据
Delay_Ms(700);
USBHD_Endp_DataUp(DEF_UEP1, KB_Data, sizeof(KB_Data), DEF_UEP_CPY_LOAD);
Delay_Ms(700);
USBHD_Endp_DataUp(DEF_UEP1, KB_Empty, sizeof(KB_Empty), DEF_UEP_CPY_LOAD);
Delay_Ms(700);
}
b. 重新编译程序
make -s
c. 烧录程序,并重启
!program D:\\gedu_work\\gdk3\\sdk\\src\\gekm\\gekm.hex
!reset
d.打开文本编辑器来观察项目的结果
看到上述结果就说明魔法键盘开发成功了。而这个魔法键盘不仅支持发送单个字母,同时也支持发送 shift Ctrl Alt等,我们可以利用这个特性开发更好玩的项目,例如发送一套游戏里的连招,或者发送一些有意义的文字。
三、总结
由于我本身专业知识不够扎实,并且也缺少嵌入式的开发经验,所以刚开始做这个项目的时总想着追根溯源,想着先看明白,先理清思路再动手,所以就这样,傻傻的看了半天也没什么实质性的进展,张老师指点道:你有任何想法和思路就去尝试啊,不要在这里空想,想法能不能成只有做了才能验证,你在这里空想是没有结果的。于是我每遇到一个想法,就上手测试一下,并记录下来。在这个验证的过程中,我对这个项目的理解逐渐加深,同时我也明白,动手实践远比脑袋空想来的实际。
最后放一张小伙伴的照片,加油吧,少年.