U-Boot 2016.05 在S3C2440上的移植(2)——NOR Flash

移植好基本框架能运行后就可以开始移植NOR Flash了,需要让U-Boot支持实际硬件平台中的NOR Flash。开发板上使用的NOR Flash型号为EN29LV160B,1024K * 16-bit。U-Boot中默认没有对此型号NOR Flash的支持,故需要添加相关代码。

U-Boot对NOR Flash的检测有两种方法,使用Legacy方法进行检测和使用CFI接口进行检测,下面将分别介绍这两种方法。其中使用CFI接口进行检测应该是更好的方法,优先使用此方法。

Nor Flash中的启动扇区(Boot Sector, Boot Block)

在Nor Flash中,有个启动扇区(Boot Sector,有时也被称为启动块)的概念,这个概念应该是只针对Nor Flash的,因为Nand Flash无法直接寻址,故Nand Flash中是没有Boot Sector的。

一个Nor Flash一般被分为若干块(Block)若干扇区(Sector),这应该只是不同厂家用的名字不同,并不存在一个Block中包含若干Sector的说法。这些扇区的大小一般并不相同,通常情况下会配置为大量大容量扇区加上少量小容量扇区的结构,这些小扇区就被称之为启动扇区。

串口终端picocom的使用

Linux下的串口终端程序主要有这几个:minicom、kermit、picocom。其中用的最多的应该是minicom,不过picocom最为简单易用,从其名字pico-com上也可以看出,这是一个比mini-com更精简的串口终端,不过其功能足够满足大多数时候的需求。

使用时,指定波特率和串口设备文件即可打开终端:

1
sudo picocom -b 115200 /dev/ttyUSB0

OpenSSH使用多个私钥(SSH Key)配置

在使用SSH时,有时候需要针对不同网站使用不同私钥,最简单的方法就是在.ssh目录(一般为~/.ssh/)下创建一个配置文件config,其内容示例如下:

1
2
3
4
5
Host github.com
IdentityFile ~/.ssh/id_rsa_github

Host git.oschina.net
IdentityFile ~/.ssh/id_rsa_oscchain

这样在登录github.com时使用id_rsa_github,而登录git.oschina.net时使用id_rsa_oscchain。如果登陆一个没有在config文件中出现的地址,则会使用默认的id_rsa文件。

crosstool-ng参数配置

本文以Samsung S3C2440处理器为例,介绍使用crosstool-ng制作交叉编译链时该如何针对特定的目标CPU进行配置。一般来说,常用的CPU架构都有至少一个现成的示例配置文件,对于S3C2440来说,一般选用arm-unknown-linux-gnueabi,下面就以这个示例配置为基础进行修改。

GCC中-march、-mtune、-mcpu三个参数的设置

在配置交叉编译链时,需要指定目标CPU的型号,根据网上广为流传的说法,需要同时指定-march-mtune-mcpu这三个参数,并且这三个参数还是不同的。在使用crosstool-ng时,就对应CT_ARCH_ARCHCT_ARCH_TUNECT_ARCH_CPU这三个参数,针对S3C2440,网上所有文章中的设置均是:

Architecture level = CT_ARCH_ARCH = -march = armv4t
Emit assembly for CPU = CT_ARCH_CPU = -mcpu = arm9tdmi
Tune for CPU = CT_ARCH_TUNE = -mtune = arm920t