找回密码
 注册
关于网站域名变更的通知
查看: 757|回复: 3
打印 上一主题 下一主题

linux学习之路_or1200移植linux

[复制链接]
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2021-7-8 11:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    : h- n: Z5 l/ Q0 w) F7 ~
    上节我们修改了适合自己开发板的 u-boot 代码,调试成功后我们就要固化我们的代码到 flash 上,我板子上的是 nor flash 在 u-boot 上的信息是:- k8 b+ y5 B' \$ {1 k, l0 i

    , y3 [# V; p* c+ w( P1 M ) L# u# l) X3 L+ o' K$ g
    , M  n; x, [* L/ U# t4 n  l
            这表明基本上flash是调通了,然后按照下载代码的流程将u-boot下载到SDRAM中先,然后再把SDRAM中u-boot程序代码复制到flash中,其中用到几个命令,flinfo,erase,cp,protect······! T" }* F0 v" o) t

    . F) M! D* K/ g* \4 w        首先,我们将整片flash擦除干净,看看u-boot的erase命令如何用:
    1 p9 b! V) g, d( t2 @) b
    ( M8 e3 B. Q* X2 e2 ~% J: g7 J ) ^+ f6 |& A. r* y3 m' M% G0 \
    ! x- ^; g+ R+ W& n$ P
            直接地,erase all即可
    ) F+ S8 ^- {+ C' \; Z+ F; j6 F$ D9 ?# e: D1 L4 B8 l4 K1 \
            然后,我们下载u-boot主程序时的地址是0x100开始执行的,看看0x100处的代码都是什么。
    - e+ G; D6 S8 P( a
    - {7 z1 F$ e& \9 ^
    3 F9 n; E6 z0 k/ Y' j  R8 Z
    6 c) H/ s' ^$ @5 j; m. y/ ?1 i        这些就是复位向量的二进制启动代码; c/ Q4 }; m5 d; R9 z

    " M- t& J' L1 ^9 P3 N8 a5 E        好,接下去
    1 c- ?- q) w' ]9 j0 i- L% x/ K
    * k2 w. g# y0 L; N) Q        我们要把flash芯片的写保护给去掉
    + f6 I* b/ ]% f
    3 }' {$ Z6 @6 [7 v, S9 z : f& P. t2 Y9 h5 ~3 \
    6 P; |  P: E1 l: `2 A5 p" H
            也是直接地,protect off all 即可
    / e4 i3 ]/ F" \6 }1 l% b  L/ d/ ~6 P* A# ]  w8 j' H7 [! r
            再然后,就是要把在SDRAM的u-boot主程序给copy到flash上面了,现在回到之前一节我们修改的u-boot代码,可以把关于flash有关的选项打开了。
    ) _, r3 P2 S' V, S/ S$ k  J
    6 I* Y" G" ~; V! M4 f        首先是异常向量的relocate% T  B* l4 w: M6 T, t' i
    , {/ D0 `+ s8 ?/ C  O3 d7 N0 D" v  }
    % i7 [2 h% h" X% O* K( L
    3 d/ `; J' G2 p
            然后就是u-boot环境变量的存放位置,由之前的SDRAM换成flash' C3 u3 q  I/ [" \; r

    ) ~7 N0 {9 {% K: y1 x2 l . l7 N! E$ y4 f) b) v% |

    1 B8 h6 N# I3 }( ?" L; z        好,妥妥的,重新编译,下载到板子的SDRAM5 Q2 [. L4 A7 e/ q$ M4 n3 c, A
    3 Z: A& ~# [! L* P2 q
            然后,解除flash的写保护,protect off all8 [7 r$ p* I/ P$ Z) [. K

    8 C5 m+ a/ y8 f4 J1 Q4 \        接着,擦除flash的所有数据,erase all
    # f& x) x: l: l$ I/ X
    ; Z, V2 e! z* C) }  W! y) \: [9 i( N  D        再来,看看flash的信息,flinfo,得到应该是所有的sections都没有RO标志% o/ v4 @! L& V& h0 X6 H( h/ r
    6 Z  F+ b' n7 X3 m: e
            再再然后,就是复制SDRAM的代码到flash上面了,用的是cp命令,这里注意一下了,由于我的板子的nor flash是16bits的,所以使用cp命令的时候要以half-word的形式复制,如果flash的8bits的话就要以byte的形式复制,32bits就word的形式啦。' Y3 b( V/ h2 Z9 G) j
    0 ?1 M+ E  v# M& ]% A
            然后在编译u-boot的源码目录下打开u-boot.lds、System.map、u-boot.map
    4 f- G: c/ Y5 T. N7 A- d% c2 k* B' j
    : v" p' }7 {/ w; |. {
    * g$ h6 F* C  m: y: y1 M" }. F. e; S
            看看u-boot是如何存放段信息的,然后编译出来的u-boot.bin
    / B3 V$ k% E$ R5 k( l. {# q) ]4 }* G" p( o1 ~/ Y/ S
    + Y+ Q# W: A. B( i1 T  @
    & R6 }3 J: p$ C4 W5 e
            只有186K,按照我板子的芯片来说
    4 @5 Q1 D" S0 S2 y0 V' X) e9 T
    7 [4 n9 ~$ K: M0 `+ H$ s3 v- H 7 h( W/ b2 B: h) o2 D. h9 [
    , B1 L7 k1 G+ l1 \8 x0 D& f! f
            8M,64sections的话前4个sections存放足够了,然后第5个存放环境变量,这也是在编写/include/configs/******.h自身开发板时头文件定义的环境变量位置。
    ; T+ i4 {3 }! l$ F! j# j) O4 g' Q) L/ U! ]
    9 Q; e9 P1 [/ q5 f$ R7 l9 I# [
    * N) S1 N9 C( z
            165行定义的是环境变量偏移量,170行就是用4个sections存放u-boot代码。# p; a/ u/ F3 ^1 l( q! _
    : i+ {7 _) P- a" I% b/ _
            OK,现在就用u-boot的cp命令copy从SDRAM到flash复制代码了,u-boot的cp命令如下:
    3 `# _4 [: y/ A" k
    8 q: [, b3 d) z, `
    ) _# s: X7 o3 B+ p7 \. l' C* n7 @9 ]- ~5 X3 t
            由于我的flash位宽是16bits,所以用cp.w每half-word地复制,然后是4个sections,起始地址0xf0000000,结束地址0xf007ffff,范围是0x7ffff% C5 k* u% X. S! j2 o
    1 J- b  p. O$ P3 _9 }: |
    4 ^$ x) ]. \7 x% Y0 J8 y+ d1 D! b

    ' q$ r9 n  {, t. g/ K4 N( V        所以,命令是cp.w 0x0 0xf0000000 0x7ffff
    " _# o/ Z2 l* ~& t' f; |6 @
    4 P" h/ o* X, T3 z, r" V, w# {0 o. m8 J" I 4 V' d' ^; g* T# e2 Y9 P( y

    ! }8 B' j1 H- W        完了之后reset开发板就可以看到u-boot启动信息了。" f2 m) }2 M  T. K( W

    , m( K& I/ U" U$ m6 O        上次移植u-boot的后半段就码到这里了。改天把在u-boot起来之后将download linux image的步骤贴上来
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-7-8 13:30 | 只看该作者
    or1200移植linux

    该用户从未签到

    3#
    发表于 2021-7-8 13:54 | 只看该作者
    linux学习之路_or1200移植linux
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2021-7-8 13:55 | 只看该作者
    _or1200移植linux
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 06:53 , Processed in 0.156250 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表