<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          第1課:S3C2440的燒寫(xiě)

          作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
          首先明確要學(xué)什么?

          1寫(xiě)B(tài)ootloader。會(huì)以u(píng)-boot為例。

          本文引用地址:http://www.ex-cimer.com/article/201611/316806.htm

          2改內(nèi)核。用ARM編譯器對(duì)linux內(nèi)核進(jìn)行編譯。并移植驅(qū)動(dòng)

          3制作文件系統(tǒng),把shell放入開(kāi)發(fā)板(串口shell),把應(yīng)用程序植入。

          那么先來(lái)介紹開(kāi)發(fā)板的硬件:

          現(xiàn)在手上拿到的是山寨的2440開(kāi)發(fā)板,分上層核心板和下層母板。

          有1個(gè)arm的cpu(片上系統(tǒng),里面還包括外設(shè),不只一個(gè)cpu),2個(gè)32m的內(nèi)存,一個(gè)flash,和一個(gè)晶振提供的時(shí)鐘。

          母板則為4.3寸觸摸屏和LCD屏(2個(gè)屏要分開(kāi)驅(qū)動(dòng)),USB的3個(gè)host端和1個(gè)device端。RJ45網(wǎng)絡(luò)端口。Rs232串口(15電壓)。

          JTAG仿真接口。SD卡槽。3個(gè)指示燈。音頻輸入輸出口。gps芯片。

          一下介紹pc機(jī)與開(kāi)發(fā)板直接的連接方式。

          usb,并口<-------------------------------->JTAG

          <------------------------串口----------------------->

          PC<------------------------網(wǎng)絡(luò)-----------------------> ARM開(kāi)發(fā)板

          <------------------------usb------------------------>

          還有一類(lèi)叫wiggier仿真器,可以進(jìn)行flash燒寫(xiě)和簡(jiǎn)單的調(diào)試。

          接下來(lái)介紹整個(gè)開(kāi)發(fā)板的燒寫(xiě)流程。

          1我們使用openjtag對(duì)裸板進(jìn)行燒寫(xiě)。OPENJTAG仿真器網(wǎng)上都有賣(mài)。它通過(guò)把寫(xiě)好的u-boot,uimage放入開(kāi)發(fā)板內(nèi)存,再通過(guò)燒寫(xiě)flash,把內(nèi)存中的u-boot程序燒如flash中。

          2利用網(wǎng)絡(luò)來(lái)巧妙安裝系統(tǒng)。先執(zhí)行minicom -s來(lái)啟動(dòng)minicom,在serial port setup中A選/dev/ttyS0, E選115200 8N1.然后關(guān)閉hardware flow control。最后選save setup as dfl。minicom就可以控制開(kāi)發(fā)板了。

          在開(kāi)發(fā)板開(kāi)機(jī)后按空格,可進(jìn)入u-boot的命令行。

          我們利用linux上的nfs把剪裁好的linux與linux系統(tǒng)的壓縮包先掛載在nfs服務(wù)器上,然后通過(guò)網(wǎng)線把開(kāi)發(fā)板和pc機(jī)連起來(lái),修改u-boot的環(huán)境變量,讓他從網(wǎng)絡(luò)加載。之后定制的linux系統(tǒng)便起來(lái)了,然后把先前一起加載的壓縮包解壓縮,解壓縮的文件自動(dòng)燒入flash中,完成燒寫(xiě)。之后把u-boot的環(huán)境變量改回來(lái)就行了。

          以下是具體的執(zhí)行代碼

          1啟動(dòng)openjtag。

          2執(zhí)行腳本

          a, >halt 使開(kāi)發(fā)板的cpu暫停
          b, >arm920t cp15 2 0協(xié)處理器命令來(lái)關(guān)閉mmu
          c,>init_2440對(duì)開(kāi)發(fā)板進(jìn)行初始化
          d,>halt
          e,>arm920t cp15 2 0
          f,>load_image /u-boot.bin 0x33f80000 把u-boot放入內(nèi)存
          g,>load_image /uImage 0x32000000 把uImage放入內(nèi)存
          h,>resume 0x33f80000 從u-boot位置開(kāi)始運(yùn)行

          i,minicom #help nand
          j,#nand erase清除flash
          k,#nand write 33f80000 0 40000 把內(nèi)存中的u-boot寫(xiě)入flash中
          l,#nand write 32000000 100000 200000把內(nèi)存中的uImage寫(xiě)入flash中
          m,#reset重啟

          3在linux下執(zhí)行一下步驟

          a,mkdir/work/root;chmod 777 /work/root 新建工作目錄,并把權(quán)限位設(shè)置到最高
          b,tar zxvf root.tgz -C /work/root解壓當(dāng)前目錄下的文件系統(tǒng)壓縮包
          b,mv root.tgz /work/root 并把該壓縮包一同放入工作目錄
          c,vi /etc/exports ,添加一行 /work/root *(rw,sync,no_root_squash) 配置nfs的配置文件
          d,services nfs restart 重啟nfs服務(wù)
          e, minicom >setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.3:/work/root ip=192.168.1.8:192.168.1.3:255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M 在minicom中的開(kāi)發(fā)板的uboot下改變環(huán)境變量,讓開(kāi)發(fā)板通過(guò)網(wǎng)絡(luò)從主機(jī)端啟動(dòng)工作目錄下的文件系統(tǒng)。(這里主機(jī)端的ip位用ifconfig eth0 +ip來(lái)設(shè))
          h,>printenv
          ti,>boot

          4之后你會(huì)發(fā)現(xiàn)開(kāi)發(fā)板的linux系統(tǒng)已經(jīng)啟動(dòng),之后繼續(xù)通過(guò)minicom操作開(kāi)發(fā)板

          a,minicom >mount /dev/mtdblock2 /mnt 把flash設(shè)備掛載到mnt里
          b,>tar zxvf root.tgz -C /mnt 把剛剛的壓縮包直接解壓到flash設(shè)備中,完成操作系統(tǒng)的燒錄
          c,>reboot 重啟

          d,minicom >setenv bootargs root=/dev/mtdblock2 console=ttySAC0 mem=64M 重啟后在u-boot里把環(huán)境變量改成從flash啟動(dòng)

          e.>boot

          這樣就是一個(gè)完整的燒錄過(guò)程。而其中的u-boot uImage 與 操作系統(tǒng)的定制。我們將在以后的課程中來(lái)編寫(xiě)。



          關(guān)鍵詞: S3C2440燒

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();