以前一直在msp430和51上工作,最近也只在stm32上干活,一直处于裸奔的阶段。感觉水平一直没有提高,决定学习一些linux的移植之类的东西,但是只有过C编程的基础,对于linux、uboot处于一知半解的状态,所以买了个friendlyarm的mini2440开始了学习。为了防止自己的硬盘崩掉,把一些学习笔记记在网上,hoho。
1.环境搭建
1.1 硬件环境
mini2440 with K9F2G08, 并口Hjtag,T43
1.2 软件环境
win7,keil4.43,Hjtag1.1,ubuntu9,arm-linux-gcc 4.4.3
2.从零开始
毕竟也算C的老鸟了,说从零开始有点夸张,不过对于linux和uboot确实算是零吧。
2.1 Hjtag
2.1.1 主板驱动必须安装好
t43装了win7后,发现lpt有问题,hjtag用不了。后来从mydrivers下了个驱动精灵,更新了一下主板驱动,搞定。
2.1.2 Hjtag LPT port setting
因为mini2440用的是10口 jtag,所以Hjtag的LPT不能采用默认的设置,必须重新设定,可以参考http://blogold.chinaunix.net/u3/105764/showart_2093789.html的文章。主要设定值包括:TMS->D2,TCK->D0,TDI->D1,TDO->BUSY,nTRST->NOTAPRST,nSRST->NOSYSRST。这个时候应该可以连上mini2440了,Hjtag程序界面会显示“arm920T”等字样。
2.1.3 Hjtag烧写mini2440的nandflash
mini2440本身只有一个4k的stepstone flash,然后必须采用外置flash,这估计是和msp430、51系列最大的区别吧。而现在一般外部存储器都用nandflash,而且hjtag能直接烧写norflash,所以就直接研究烧写nand就ok了。
利用hjtag的flasher烧写nandflash需要hfc配置文件,其实它的功能就是配置s3c2440的nandflash驱动,然后配置你选用的外部sdram的类型,因为我的是mini2440,用的是s3c2440+k9f2g08,所以就直接抄袭twentyone的啦:
NAND-FLASH
S3C2440+K9F2G08
MEMORY SECTION:
08-BIT X 1-CHIP
0x0
0x30000000
XTAL SECTION:
NULL
TCK SECTION:
9
5
SCRIPT SECTION:
SoftReset+++
Setmem+32-Bit+0x53000000+0x00000000 ; 关闭watchdog
Setmem+32-Bit+0x4A000008+0xFFFFFFFFF &nb