TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
前言NAND FLASH版本和eMMC版本核心板使用方法基本一致。本文主要描述NAND FLASH版本与eMMC版本核心板在使用方面的不同之处,相同之处将不重复描述。
& M& t9 \4 G( }1.U-Boot编译进行U-Boot编译选项配置时,请执行如下命令。
# S& \7 B* W2 j2 ] n' {% PHost#make ARCH=ARM CROSS_COMPILE=arm-linux-gnueabihf- am335x_evm_nandboot_config' r) K/ w. z3 l* L( b1 v
![]() 1 z4 }, `4 W& V4 x9 m% ]6 N: S
图 1 7 f- V* Z: r4 b7 b) d, o
我司提供经过验证的U-Boot镜像文件位于产品资料“4-软件资料/Linux/U-Boot/image/u-boot-2017.01-gad3370e-v2.1/”目录下,分别为MLO-nand、u-boot.img-nand。系统启动卡制作完成后,请将MLO-nand和u-boot.img-nand文件复制到系统启动卡BOOT分区下,备份原有的eMMC版本MLO、u-boot.img文件,并将MLO-nand和u-boot.img-nand文件重命名为MLO、u-boot.img。$ `$ ^+ u6 f+ T1 x
![]()
5 O7 I) g) V! `2 o" _( X图 2 # e$ j, |; Z; v* B7 H
Host#sudo cp MLO-nand MLO
7 B% ^1 @2 u7 H; f' Z5 y0 v' ZHost#sudo cp u-boot.img-nand u-boot.img* ~. I+ Q2 S/ |5 q3 k2 @
![]() / f5 K. p5 s1 y8 I# N8 _* B4 S
图 3
6 z0 h4 ~' |& O* T& ]2.基础设备树文件编译基础设备树源文件为内核源码“arch/arm/boot/dts”目录下的tl335x-evm-nandflash.dts和tl335x-evm-nandflash-hdmi.dts,重新编译基础设备树时请使用此文件。我司提供经过验证的基础设备树文件为产品资料“4-软件资料/Linux/Kernel/image/linux-rt-4.9.65-gd8e636c-v2.1/”目录下的tl335x-evm-nandflash.dtb和tl335x-evm-nandflash-hdmi.dtb,请将其分别复制到系统启动卡rootfs分区以及rootfs-backup分区的boot目录下。
" H7 }- \+ p! ]. p( ~![]() 5 v: S/ J9 z( h: g: e4 t
图 4 . f- ?) W: ~& C, e7 x& ?, d9 e
请执行如下命令将tl335x-evm.dtb软链到tl335x-evm-nandflash.dtb文件。tl335x-evm-nandflash.dtb支持LCD显示,如需使用HDMI显示,则将tl335x-evm.dtb软链到tl335x-evm-nandflash-hdmi.dtb文件即可。2 {( p0 A V: u" N: G( W* p
Host#sudo rm tl335x-evm.dtb, [' r& Q& ^& u6 a N
Host#sudo ln -s tl335x-evm-nandflash.dtb tl335x-evm.dtb
! f9 t+ _3 V$ h. p+ P6 K S; AHost#ls -l% H( {- Z# q: w! R/ ~
![]() 6 d3 g( ~" h7 }- g3 Z+ W% i! c7 ^$ z
图 5 " |$ E) L; o* F; V/ {4 q/ v" [. |
使用替换了U-Boot和基础设备树文件的Linux系统启动卡启动评估板,进入文件系统执行如下命令可查看到NAND FLASH分区信息,即说明文件替换成功。+ q5 y6 A9 C% Q$ }6 z
Host#cat /proc/mtd8 P0 |! L9 } X
![]() 9 x G# ~6 {- j9 U) |5 A" p
图 6 " c' G* N% L2 V, ?- G; U3 n7 k0 ]' K' k
3.固化Linux系统本章节介绍Linux系统固化过程,包括固化U-Boot到SPI FLASH和固化文件系统到NAND FLASH。固化成功后,评估板即可从SPI FLASH启动U-Boot,然后从NAND FLASH加载内核、设备树和文件系统。3 e! R: }+ u, y# p; L
- SPI FLASH、NAND FLASH分区说明9 _; ~, S6 s& X0 q$ O3 }3 ^6 D
进入评估板系统后执行如下命令,查看SPI FLASH和NAND FLASH分区信息。
& \5 I0 B4 u+ f- R6 p+ T6 ]$ Q; sTarget#cat /proc/mtd
8 n2 p j3 s# d& Y7 ?1 ]![]() + L& G: @' Y6 ], V' t4 o) r: W
图 7 9 l9 u+ F U0 \% C0 ?
SPI FLASH
, d: o9 Q' I" r+ g: | | MTD0& ^: f* ?' a/ H, {6 ~
| spi.spl:存放U-Boot第一阶段启动文件MLO5 n3 P- |! j4 ~8 T/ h& ^
| MTD1
/ d) \# C1 D* b1 J: C | spi.u-boot:存放U-Boot第二阶段启动文件u-boot.img
2 a8 U Y* W0 U+ U0 P) n/ a | MTD2
& F+ f' h% L6 r | spi.env:存放环境变量
) D; z n) Y" G& m# H9 A) _ | MTD32 }- T# l1 t- a) J/ H
| spi.devicetree:存放设备树文件(暂未使用)
& h% Q9 L4 v4 l3 A! i$ | | MTD4
h6 f2 U& ~$ A* V+ h | spi.kernel:存放内核镜像(暂未使用)
7 e# x2 `6 @7 {" @/ W7 s | NAND FLASH
. r, S5 N) \. x, e3 I | MTD5$ e, l5 m- _8 F+ R- }
| nand.spl:存放U-Boot第一阶段启动文件MLO(暂未使用)
& h% ?% w4 E0 O | MTD6/ X/ J$ A% c7 c3 W; F. s' e. @6 |
| nand.u-boot:存放U-Boot第二阶段启动文件u-boot.img(暂未使用)# r R3 B! D$ Y# ?+ D
| MTD7, j( k/ l3 B" S
| nand.env:存放环境变量(暂未使用)
5 h( z# ^, n8 M- x Q | MTD8
% [; Y# ^/ E" A1 n | nand.devicetree:存放设备树文件
2 P% U L7 a1 \7 ` | MTD9
% [& w% k8 ]4 R1 k+ a: ]4 c | nand.kernel:存放内核镜像
, Q) [1 i' p2 {4 O | MTD102 M( t+ z- i$ G, @9 i
| nand.logo:存放LOGO文件) {: h& h" D- Z1 ~' C9 W3 k X/ o
| MTD11
4 J7 M: p+ `1 C* u3 c | nand.mini-fs:备用分区,一般存放小型文件系统(暂未使用)
+ \* `3 Z' }7 p/ E# x1 {* t | MTD121 |1 K2 ]# m: f4 b* X) k$ w- Q
| nand.rootfs:存放文件系统2 G5 s+ P7 t5 D5 e
|
1 o- c6 v1 X4 B! Y: W- 固化Linux系统
. r. N, F ~7 i+ o: a* w Linux系统启动卡制作时,已将系统固化的脚本文件mknandboot.sh复制到了Linux系统启动卡文件系统的“/opt/tools/make-system”目录下。! ^6 K) J) s% R3 H! t+ x- v
![]()
* W0 T$ u- z6 q图 8
& q% M! c, Y7 W1 m7 [4 S" R4 O执行如下命令进行一键固化。
4 ^4 d+ g, m2 n+ R. BTarget#/opt/tools/make-system/mknandboot.sh L. H$ ^' B( o) y+ ~& Z6 t
![]() R a" R# P! ?" ~2 Y; ~
图 9
: o, J9 B5 B0 u; [) G$ U脚本会进行如下操作:2 G* u& W- z9 @% C! g) {! _
- 擦除SPI FLASH、NAND FLASH。
- 将Linux系统启动卡BOOT分区中的U-Boot固化到SPI FLASH对应分区。
- 将Linux系统启动卡BOOT分区中的LOGO固化到NAND FLASH对应分区。
- 将Linux系统启动卡rootfs-backup分区中的文件系统boot目录下的内核镜像和基础设备树文件固化到NAND FLASH对应分区。
- 将Linux系统启动卡rootfs-backup分区中的文件系统固化到NAND FLASH对应分区。
- D' T% x( ~1 a. u; H) @5 t 用时约5~10min,Linux系统固化成功,同时串口调试终端打印提示信息。. a' X" F9 A' X' C1 f. I* k/ O! F4 p8 d
备注:脚本文件会将设备树文件和内核镜像固化到SPI FLASH中,实际启动并不会从SPI FLASH中加载设备树和内核镜像。
/ e" z6 e h2 M8 i7 \9 A; b
, ^: g; d( l) a+ J' Q, \& H" y3 N4.从SPI+NAND FLASH启动系统评估板断电,将Linux系统启动卡从评估板Micro SD卡槽中取出,根据评估底板丝印将拨码开关拨为10010(1~5),此档位为SPI FLASH启动模式。评估板上电,串口调试终端将会打印如下类似启动信息。' \: b8 X8 s7 [# A
![]() ) R& G! x: a( [ `
图 10
/ ]; j& B0 v2 e" h+ }![]()
: H$ z7 f+ p4 r! T1 I2 f图 11 6 h) Z0 ]& L/ U. |) L
5.NAND FLASH读写测试本章节对NAND FLASH的MTD11分区进行读写速度测试。MTD11是NAND FLASH的备用分区,一般存放小型文件系统,大小为32MByte。读写测试会将该分区内容擦除,请做好数据备份。6 R0 s) P9 |6 I2 x8 [+ n) b2 s
执行如下命令查询NAND FLASH分区,确认MTD11分区大小(读写请勿超出分区大小),将该分区内容擦除。
+ L% b' E5 d! P. b7 P1 lTarget#cat /proc/mtd& U7 C% w/ l6 z( n# F# {
Target# flash_erase /dev/mtd11 0 0
# Y2 l3 R; A2 ~![]() % U. S+ `- ` U9 d8 i
图 12
$ `0 t' x+ t: y- NAND FLASH写速度测试& `) O+ s0 U' i" a- }. r. f" q
进入评估板文件系统,执行如下命令对NAND FLASH进行写速度测试。
/ L7 S) ?2 c% e9 ?5 nTarget#time dd if=/dev/zero of=/dev/mtd11 bs=1024k count=30+ v0 Y, |8 T6 t
![]()
3 h' u" ^+ b( R% [$ K图 13
0 J1 `# T6 M& \+ c此处一共写30MByte测试数据到NAND FLASH的MTD11分区下,可看到本次测试的NAND FLASH写速度约为:30MB/8.24s=3.64MB/s。
1 m( }5 U9 A! Q q2 \- U- NAND FLASH读速度测试
/ ^( v3 @& p, `6 x1 F4 O' w- a; S4 { 重启评估板,进入评估板文件系统,执行如下命令对NAND FLASH进行读速度测试。
/ b W2 l& a$ h6 X. MTarget#time dd if=/dev/mtd11 of=/dev/null bs=1024k count=30
% \' J; U& J8 Z" }: y/ B0 L1 I% ]![]() 5 y* I l- c8 \/ x1 ]
图 14 此处从NAND FLASH的MTD11分区读取30MByte数据,可看到本次测试的NAND FLASH读速度约为:30MB/4.47s=6.71MB/s。' x2 D( \8 d2 x$ h) w% `
1 g. T, i# |( J1 R8 ] |
|