环境介绍:
slackware 13 x86:LInux核心版本2.6.29、gcc4.4.4、arm-linux-gcc4.4.3
mini2440:学习开发板,CPU是ARM920t(s3c2440),内置4KB RAM,开发板上有2MB的NOR FLASH及128MB NAND FLASH
openJTAG:USB转串口、openJTAG仿真器
minicom:串口通讯程序
openocd:openJTAG搭配的上位机软件,可以用来控制ARM芯片的状态
dnw:在ARM内部写好Bootloader后,可用软件通过USB口向开发板传送程序
首先以root启动Linux,然后将openJTAG上的JTAG口、USB口、串口分别与开发板的JTAG口、计算机的USB口、开发板的串口相联接。如果需要用dnw,则应该将开发板的USB SLAVE与计算机的USB口联接。
将存储器启动选择钮拔在NOR FLASH的位置。
在minicom中正确配置ttyUSB0口(即USB转串口),启动minicom。
给开发板供电。
启动openocd,应该会看到检测到CPU的信息。
进行 telnet 127.0.0.1 4444,登录到开发板,进行CPU的状态控制(此步需保证ifconfig lo up)。
将init/init.bin装载到0x40000000(此处在NOR FLASH方式启动时映射的是内部4KB),并运行之(load_image init/init.bin 0x40000000resume 0x40000000)。之前需将开发板halt,并设置MMU与D-cache为disabled(arm920t cp15 2 0step)。
再次halt。将u-boot/u-boot.bin装载到0x33f80000(此处映射为SDRAM),并运行。此时minicom中会有信息输出。
再次halt。将需写入的程序装载到0x30000000,并继续运行u-boot(resume)。
在minicom中,使用protect off all将内存保护取消,再erase 0 200000将NOR FLASH清空。运行cp.b 30000000 0 200000将0x30000000处的程序拷入0x00000000-0x00200000处。这一步即是将SDRAM中的待调试程序烧入了NOR FLASH中。
重新启动开发板,即可看到程序自动运行。
这里只说了NOR FLASH的调试、烧写方法。NOR FLASH只有2MB,但足够容下学习裸板开发的程序。NAND FLASH与此类似,只是地址映射的区域不同而已。