一、引脚接法:
1、模块与板子上的寄存器通过引脚相连,不同bit位的芯片引脚接法不同。
二、时序图:
1、根据时序图的标注搜索芯片手册并配置相应寄存器,寄存器中的参数要参照硬件的相关手册设置。
三、寄存器配置:
1、根据芯片手册,注意寄存器读写的位数。8位用 (volatile unsigned char *) 类型指针,16位用 (volatile unsigned short *) 类型指针,以此类推。
四、函数移植:
1、去uboot中查找
2、去内核源码中查找
3、去库函数中查找(一般来说编译器自带有很多库)
①、输入命令arm-linux-gcc -v,查看当前使用的交叉编译工具链。
②、输入命令echo $PATH,在环境变量中找到当前使用的交叉编译工具链所在的路径。
③、进入交叉编译工具链所在目录搜索相关函数,例如grep “__floatsisf” * -nR。
④、提取出其中的静态库(.a后缀文件),复制文件到代码文件。
⑤、修改Makefile,依次尝试加入的每个静态库,直至编译成功。
注:
①、如果更换了编译器,需要自己去编译器目录里找出对应的库,并逐个尝试。
②、ARM是精简指令集,对求余和除法操作基本上不支持,需要添加linux内核源码linux/arch/arm/lib/lib1funcs.S实现支持除法、求模操作等操作的库函数。
附:常识
1、Flash 编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的块擦除,即把所有位写为 1 (块内的所有字节变为 0xff)。
2、常见缩写:
VDD:电源电压(单极器件)。 VCC:电源电压(双极器件)。 VSS:地或负极。 VEE:负电压供电。
GND:接地。
3、有些中断触发之后不会自动清除,需要手动清除。具体参考芯片手册。
网友评论