环境搭建:
笔记本有无线网卡,还有有线网卡,与开发板的链接方案有两种,
方案1,笔记本有线网口直连开发板,无线网卡正常连网;需要配置路由表,使笔记本和开发板可以上传下载文件,且不影响正常上网。
方案2,笔记本和开发板都连在一个局域网,笔记本只需要使用无线网卡,同样可实现与开发板通讯。
两种方式都需要连接开发板串口,操作开发板。
开发板先烧写正常的uboot,norFLash和nandFlash都烧写uboot.
uboot 启动后通过tftp 下载程序到开发板运行。
实验一:点亮led 实验
点亮led灯的实验是第一个实验,并不复杂。
其中遇到2个问题,记录于此:
问题1,uboot下载led的程序不能正常点亮。
问题出在tftp 下载地址和运行地址。
tftp 0x0 led.bin
tftp 从服务器下载led.bin 保存在0x0 地址。
如果是norFlash 启动,0x0 地址是norFlash,tftp 下载时不能把led.bin 写到0x0,go 0x0 时,看到uboot 重启了,是因为0x0 实际上是NorFlash中的uboot代码。
如果是NorFlash启动,内存已经初始化过了,内存的起始地址是0x30000000,可以tftp下载到 0x30000000。
如果是NandFlash 启动的,内部的4KRam是可用的。tftp 可以下载到0x0地址,然后go 0x0启动,但是程序不能大于4K,否则只能下载到0x30000000 以上的地址。
最后关于运行地址,编译时设置代码段地址Ttext,与tftp的下载地址最好保持一致;虽然led代码简单,使用的都是与位置无关指令,但是还是要理解代码段地址和实际运行地址的关系,如果代码中有与位置相关指令,要保证运行地址和代码段地址一样。
LDR pc,=label #听说这是与代码位置有关指令
ADR pc,label #这条指令是与位置无关的指令
问题二:
寄存器清0(&0);
寄存器置1(| 1);