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

linux学习之路_or1200移植linux

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    8 P1 m3 X' M: t! @
    上节我们修改了适合自己开发板的 u-boot 代码,调试成功后我们就要固化我们的代码到 flash 上,我板子上的是 nor flash 在 u-boot 上的信息是:
    / ~7 G7 v1 ?+ c5 Y3 V
    1 p; Q' {4 ^, Q6 R  D7 m % I/ O5 }2 c7 y: o' \" }6 ^& H

    1 D6 H( Y3 b1 k  _/ G8 z+ }/ I        这表明基本上flash是调通了,然后按照下载代码的流程将u-boot下载到SDRAM中先,然后再把SDRAM中u-boot程序代码复制到flash中,其中用到几个命令,flinfo,erase,cp,protect······
    , L7 F' l  C# }, v5 r. o, P+ {  l# |; ^% K. r& D( ~
            首先,我们将整片flash擦除干净,看看u-boot的erase命令如何用:' _3 s! Z- Y4 f
    ' W/ B0 e) J3 W  O* p

    7 J# [! p+ z  i3 t5 ^, r- B8 B* Q  W8 V( ^3 M! ?3 G
            直接地,erase all即可
    ! {$ A" l, J0 O3 H4 j* d% Z0 O% C2 P5 D* u, [  _0 B* \9 H0 V$ b. q
            然后,我们下载u-boot主程序时的地址是0x100开始执行的,看看0x100处的代码都是什么。  s, Q6 |+ i% `9 G. Y2 o

    7 u# v4 I' V8 p' x* r# a
    ) z3 D; |$ e& h, e! h% ?* `/ y" [
            这些就是复位向量的二进制启动代码
    $ P5 Z/ W1 d3 T7 I& X/ W: Q8 [# ]/ _
            好,接下去
    1 ~5 P" i& X2 ?+ j! J/ m" y- e( |8 M  [# t$ h
            我们要把flash芯片的写保护给去掉
    ! ?) |* u" C/ A; r0 e- V, B+ @
    7 X% H8 P" x1 _
    2 F2 ?+ c! @' S/ u5 W
    . p' J; Y& S( P        也是直接地,protect off all 即可
    * c% Q( H6 O- R9 p0 w. z! L* \3 A# d- {
            再然后,就是要把在SDRAM的u-boot主程序给copy到flash上面了,现在回到之前一节我们修改的u-boot代码,可以把关于flash有关的选项打开了。
    # j, U+ L6 g0 J) M, L  X, r. V2 M- M9 f9 Z. ]3 s- X1 ]+ O
            首先是异常向量的relocate
    $ U* i; ^  a5 B5 \6 s
    5 H- n4 T2 V1 D7 x " i: `6 }( c# O
    5 W3 U9 A% o, k6 O
            然后就是u-boot环境变量的存放位置,由之前的SDRAM换成flash
    ( w) Y. |" M0 F' y- G& m( |  B1 i3 i9 a8 J  o

    7 y* o+ r  S, y4 W
    : p! A( u0 n# n: p8 H        好,妥妥的,重新编译,下载到板子的SDRAM
    & H& b, ^% Q+ j* R# {3 j2 T8 F8 N, f( K
            然后,解除flash的写保护,protect off all7 H5 N7 P0 U4 o3 ]& [0 @

    : j& x$ P, P' C! w+ M& j        接着,擦除flash的所有数据,erase all
    6 E) e  v+ P/ y. n& x
    # }4 H7 e/ K1 s5 h# z        再来,看看flash的信息,flinfo,得到应该是所有的sections都没有RO标志
      u- G9 ?5 y& o, m- f
    ) x$ G. e; L& i# R3 j        再再然后,就是复制SDRAM的代码到flash上面了,用的是cp命令,这里注意一下了,由于我的板子的nor flash是16bits的,所以使用cp命令的时候要以half-word的形式复制,如果flash的8bits的话就要以byte的形式复制,32bits就word的形式啦。
    7 p% J8 \! V2 S1 n6 J, q* }7 O3 P( _, \2 T) R* J# N  j
            然后在编译u-boot的源码目录下打开u-boot.lds、System.map、u-boot.map- I, M4 T3 a) y  m9 g

      w6 ^+ Q3 i; `+ V
    ) n, o4 y/ \$ `( S& Y9 a
    0 _( B( l  x2 j0 T6 I& h        看看u-boot是如何存放段信息的,然后编译出来的u-boot.bin" F0 U: M' X" T
    2 C- C2 T  F6 S
    , T) w8 B8 G4 p) P! f6 g
    ( O+ x0 f0 w+ A7 _9 F# O' g* U
            只有186K,按照我板子的芯片来说1 i- E: t/ G3 Q0 y
    ' v7 P, l: q/ s& S& G: F
    % M; O, l+ D% s
    . c1 N; v% ?$ s9 q8 m. |8 W
            8M,64sections的话前4个sections存放足够了,然后第5个存放环境变量,这也是在编写/include/configs/******.h自身开发板时头文件定义的环境变量位置。' W$ w( g2 M. X& u

    2 n9 k1 l2 \0 X! r2 {) F+ r 2 I0 v" y* B7 L* V
    , R! a0 @+ J+ Q1 @
            165行定义的是环境变量偏移量,170行就是用4个sections存放u-boot代码。
    7 F! r" t% I2 L$ p/ p  {
    % B: D6 U/ W+ _3 d! i4 _        OK,现在就用u-boot的cp命令copy从SDRAM到flash复制代码了,u-boot的cp命令如下:
    1 i5 z1 m3 \3 Z# ~; o6 D
    / t- f0 L. F# I2 w( G/ D" C
    3 c" |  Z4 Z) D8 R6 K2 u6 d2 J. l' j7 K8 U+ P; [
            由于我的flash位宽是16bits,所以用cp.w每half-word地复制,然后是4个sections,起始地址0xf0000000,结束地址0xf007ffff,范围是0x7ffff
    # N3 k0 L% x) I4 O$ I( ^! j+ J! n' i! N/ T8 t* Q2 q, V8 T$ z
    8 L6 @0 O9 j7 W9 J" V
    8 z" }5 P* I1 R, W5 ~9 K+ u
            所以,命令是cp.w 0x0 0xf0000000 0x7ffff
    % S/ j8 {7 l. E" C
    . @8 _" {- B" a+ p. o/ i  Z5 ~3 x4 w, c ) x  Z" F+ i( x$ M, i/ M
    8 F0 \" T/ U/ p6 D- M8 I, k7 ^) q
            完了之后reset开发板就可以看到u-boot启动信息了。* p6 h4 C  c* f" {1 {$ z. j
    1 t. _, T/ P7 }$ a
            上次移植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 13:31 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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