新聞中心

        第1課:S3C2440的燒寫

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

        1寫B(tài)ootloader。會以u-boot為例。

        本文引用地址:http://www.104case.com/article/201611/316806.htm

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

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

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

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

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

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

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

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

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

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

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

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

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

        接下來介紹整個開發(fā)板的燒寫流程。

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

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

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

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

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

        1啟動openjtag。

        2執(zhí)行腳本

        a, >halt 使開發(fā)板的cpu暫停
        b, >arm920t cp15 2 0協(xié)處理器命令來關(guān)閉mmu
        c,>init_2440對開發(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位置開始運(yùn)行

        i,minicom #help nand
        j,#nand erase清除flash
        k,#nand write 33f80000 0 40000 把內(nèi)存中的u-boot寫入flash中
        l,#nand write 32000000 100000 200000把內(nèi)存中的uImage寫入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中的開發(fā)板的uboot下改變環(huán)境變量,讓開發(fā)板通過網(wǎng)絡(luò)從主機(jī)端啟動工作目錄下的文件系統(tǒng)。(這里主機(jī)端的ip位用ifconfig eth0 +ip來設(shè))
        h,>printenv
        ti,>boot

        4之后你會發(fā)現(xiàn)開發(fā)板的linux系統(tǒng)已經(jīng)啟動,之后繼續(xù)通過minicom操作開發(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啟動

        e.>boot

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



        關(guān)鍵詞: S3C2440燒

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 波密县| 吉林市| 杭锦后旗| 贡嘎县| 周口市| 纳雍县| 综艺| 紫金县| 社会| 德兴市| 淳化县| 孟州市| 元江| 特克斯县| 平谷区| 佛教| 西乌| 西畴县| 若羌县| 扎囊县| 两当县| 武宣县| 三台县| 孟州市| 进贤县| 包头市| 横山县| 灵璧县| SHOW| 商南县| 长乐市| 金平| 淮安市| 双流县| 井冈山市| 北海市| 华坪县| 定边县| 通江县| 亚东县| 普安县|