第四章 裸机_裸机开发知识补充

来源:互联网 发布:淘宝卖家怎样刷销量 编辑:程序博客网 时间:2024/05/02 02:49

原理图部分:

1.芯片内部上拉功能的使用,在外接按键或者用作中断功能的时候可以将内部上拉功能使能,这样就避免了在外部电路需要接一个上拉电阻。

2.2440的内存控制器会根据CPU发出的地址范围自动将对应芯片的片选端使能,能实现的原因是各个外设映射的地址不一样。

3.协议:

(1)你说的别人能听懂:双方约定信号的协议。

(2)你说的语速要让别人接受:双方满足时序要求。

4.UART:Universal Async Receive/Transmit。

5.CPU认为一个地址对应一个字节,所以RAM地址线从ADD2开始(ADD0、ADD1没有接),这是因为RAM是32位宽度的数据输出。

6.IIC设备可以多个接在同样的总线上,每个设备都有唯一的地址。

7.原理图中,如果一个芯片的某个管脚使用了如nOE/OE(带上划线),则表示这个信号是低电平有效。

8.CPU要访问nand flash需要通过nand flash控制器,而访问nor flash和RAM则可以直接访问。

系统的烧写:

1.USB转JTAG板

2.安装oflash:把oflash.exe以及FTD2XX.dll文件复制到system32文件夹下,然后在windows的运行框中输入oflash就可以执行。

3.创建secureCRT的时候flow control要去掉,否则键盘无法输入。

4.韦东山的uboot在上电之后的前3秒按空格键,会停留在uboot,不按的话直接启动操作系统,注意只能按空格键。

5.烧写裸板程序,DOS命令进入bin文件存放的目录,然后oflsh led.bin回车,然后按提示操作,下载完成之后重新上电即可执行裸板程序(只有wiggler板才需要重新上电)。

6.完全开发手册书上的程序只能烧写到nand flash运行,韦东山给的uboot可以烧写到nand或者nor flash都可以。

7.Jlink只能用来烧写nor flash,烧写好nor flash之后将板子设置为nor flash启动,使用nor flash的uboot来烧写nand flash。

8.韦东山的uboot,按Q可以退出menu,退出之后,输入menu可以再次进入menu。

9.tftp的使用

(1)开发板ip的设置:set ipaddr 192.168.1.24

服务器ip的设置:set serverip 192.168.1.1

保存:save

启动windows下的tftp工具,并设置好当前目录。

(2)测试是否连接正常,用开发板ping命令PC机,注意不能使用PC机ping开发板,因为开发板不会回复ping包。

Ping命令:ping 192.168.1.1

(3)下载文件

Tftp命令:tftp 30000000 led.bin

(4)擦除和烧写

擦除nand flash对应区域:nand erase bootloader

烧写nand flash对应区域:nand write 30000000 bootloader

PS:bootloader表示烧写的位置即大小。

10.在OpenJTAG界面下输入mtd可以查看nand的分区信息。这个分区只不过是一个地址信息,表示擦除的时候从哪里开始到哪里结束。

11.内核的烧写

(1)K命令,使用DNW传送,之后的都是自动烧写。

(2)这个过程可以用tftp实现

下载内核到内存:tftp 30000000 uImage

擦除:nand erase kernel

烧写:nand write.jffs2 30000000 kernel

使用jffs2的原因:nand flash容易出现位反转,写入一页数据里面可能有一位出现位反转,除了烧写这一页数据之外还将校验码烧写进去。

12.文件系统的烧写

(1)输入y,然后使用DNW传送yaffs2映像文件。

(2)输入j,然后使用DNW传送jffs2文件,烧写完成之后,还需要进入到OpenJTAG界面,输入命令:

OpenJTAG>set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2

OpenJTAG>save

PS:指定rootfstype的原因,如果不指定,内核首先将它当做yaffs进行挂载,如果不成功再尝试jffs2,但是对于大多数jffs2文件系统来说,可以被错误的当做yaffs挂载,但是挂载之后并不能正常使用。

(3)tftp:

tftp 30000000 fs_qtopia.yaffs2

nand erase root

nand write.yaffs2 30000000 $(filesize)

或者

tftp 30000000 fs_qtopia.jffs2

nand erase root

nand write.jffs2 30000000 $(filesize)

PS:不使用boot,因为boot代表的区域很大,如果从内存的30000000开始读取boot分区那么大的内容,可能会给文件系统带来很多没用的东西导致文件系统无法使用。

13.uboot的重启命令:reset

Linux系统的重启命令:reboot

14.ubuntu的镜像必须存放在NTFS格式的盘中,因为FAT32文件系统单个文件最大只支持到4G。

15.虚拟机的网络设置:

(1)vmware打开的Linux机器使用桥接(就是通过一台设备(可能不止一个)把几个网络串起来形成的连接)。

(2)三者(windows,虚拟机的linux,开发板)可互联。互联的方式可以通过PC的有线网卡,也可以通过PC的无线网卡+开发板连接路由器实现。

工具的使用:

1.uboot打补丁

---:表示原来的文件

+++:修改后的文件

# patch –p1 < ../uboot.patch

-p后面的数字表示忽略路径中的前几个斜杠的内容。

2.创建压缩文件

# tar cjf uboot.tar.bz2

3.因为在linux中,点开头的文件都是隐藏文件,你可以到当前目录下通过 ls -a或ls -A命令查看到。

4.SourceInsight添加完目录之后需要同步,同步就是SourceInsight内部生成一些数据库,方便跳转之类的功能。

5.对于韦东山的uboot,可以使用命令:

OpenJTAG> nfs 30000000 192.168.1.19:/work/nfs_root/tmp/test.c

从虚拟机下载文件到开发板。使用这个命令的前提是虚拟机上的nfs服务启动了。

6.设置uboot的启动变量的时候,主机名可以省略,省略的形式就是两个冒号中间什么也没有填写。

7.编译uboot和编译文件系统内核等用的编译器版本不一样。

8.韦东山的内核使用到TQ2440或者mini2440的方法,到韦东山的网盘中下载“韦东Linux视频第1第2期所有源码文档图片芯片手册.rar”下载后找到对应板子的lcd.c拷贝到linux-2.6.22/drivers/video替换到s3c2410fb.c(该文件为内核自带的lcd驱动)拷贝完成之后,修改video目录的Makefile,将s3c2410fb.o修改为lcd.o;另一个需要修改的地方是网卡驱动,拷贝到driver/net目录里面,然后再同样的方法修改Makefile。

9.韦东山所使用的uboot以及内核都是在原始版的代码上打补丁生成的,所以都有打补丁这一步骤。

10.用DNW下载文件的时候,先在uboot界面选择下载之后,然后再打开DNW软件,再选择要传输的文件。

11.win7系统下无法使用DNW软件下载的解决方法:

(1)使用网络下载

1.1 tftp(以下操作是在OpenJTAG页面下输入)

A 首先打开tftp服务器软件(IP保持为同一网段)

B tftp 30000000 uImage

C mtdpart(显示有哪些分区)

D nand erase kernel

E nand write.jffs2 30000000 kernel

1.2 nfs

A 在PC的linux系统终端

# cat /etc/exports

这里打印出来的目录就是开发板可以挂接的目录。

B nfs 30000000 192.168.1.123:/work/nfs_root/uImage(NFS下载命令,开发板上,下载完成之后的umount会卡住一会儿)

C nand erase kernel

D nand write.jffs2 30000000 kernel

(2)使用linux下的DNW下载

A 把linux下的dnw应用程序放到/bin目录

# sudo chmod +x /bin/dnw

# sudo chmod +s /bin/dnw

注:必须让vmware位于前台,再接USB线和开发板,这样linux系统才能识别出设备。如果识别成功的话在,windows的设备管理器的通用串行总线控制器中会有一项“VMware USB Device”。同样也可以在linux终端输入lsusb可以查看到刚才识别出来的USB设备。

B 在uboot界面输入下载命令,然后在linux下执行dnw uImage即可开始下载。

12.远程登录linux时SecureCRT选择SSH2创建连接,而不是Serial。

0 0