<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 1. Uboot編譯配置 首先規劃flash分區,我測試用的flash大小為16M,型號為MX25L12873F,規劃如下: ~~~ [第一分區1MB存放spl和uboot] 0x000000000000-0x000000100000 : "uboot" [第二分區64KB存放dtb文件] 0x000000100000-0x000000110000 : "dtb" [第三分區4MB存放內核] 0x000000110000-0x000000510000 : "kernel" [剩余空間存放根文件系統] 0x000000510000-0x000001000000 : "rootfs" ~~~ 由于目前Uboot環境變量固定存放在1MB位置之內,所有留給uboot的空間固定到flash前1MB的位置不變。每個分區的大小必須是擦除塊大小的整數倍,MX25L12873F的擦除塊大小是64KB。 準備uboot 下載包含spi驅動的體驗版本uboot,該驅動目前尚未合并到主線 `git clone -b v3s-spi-experimental https://github.com/Lichee-Pi/u-boot.git` 執行`make ARCH=arm menuconfig`打開uboot菜單配置,進入到`Device Drivers > SPI Flash Support` 注意看一下自己flash的廠家名稱,例如選上Macronix SPI flash support用來支持我測試用的flash:MX25L12873F。 配置uboot默認環境變量,在文件`include/configs/sun8i.h`中添加默認bootcmd和bootargs的環境變量設置,注意添加的位置在“#include <configs/sunxi-common.h>”的前邊。 ![](https://box.kancloud.cn/b4cce3d6f353a3aabb326dab402d58a3_1642x622.jpg) ~~~ vi include/configs/sun8i.h #define CONFIG_BOOTCOMMAND "sf probe 0; " \ "sf read 0x41800000 0x100000 0x10000; " \ "sf read 0x41000000 0x110000 0x400000; " \ "bootz 0x41000000 - 0x41800000" #define CONFIG_BOOTARGS "console=ttyS0,115200 earlyprintk panic=5 rootwait " \ "mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,4M(kernel)ro,-(rootfs) root=31:03 rw rootfstype=jffs2" ~~~ 該環境變量通過在bootargs中增加mtdparts內核參數來告訴內核flash的分區設置信息,并通過root=31:03來告訴內核rootfs的位置。 sf read 0x41800000 0x100000 0x10000; //從flash0x100000(1MB)位置讀取dtb放到內存0x41800000偏移處。 sf read 0x41000000 0x110000 0x400000; //從flash0x110000(1MB+64KB)位置讀取dtb放到內存0x41000000偏移處。 bootz 0x41000000 (內核地址)- 0x41800000(dtb地址) 啟動內核 編譯uboot `make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4` # 2. linux內核編譯配置 linux內核基于github上的版本https://github.com/Lichee-Pi/linux.git 執行`make ARCH=arm menuconfig`打開內核菜單配置,進入到`Device Drivers > Memory Technology Device (MTD) support`,確保選擇上mtd的`<*> Command line partition table parsing`支持,該項目用來解析uboot傳遞過來的flash分區信息。 ![](https://box.kancloud.cn/3ed4fd5d601aceb7f896521ba4c67cf6_1430x862.jpg) 修改dts配置添加spi flash節點 ` vi arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts` 添加spi節點配置: ~~~ &spi0 { status ="okay"; mx25l12805d:mx25l12805d@0 { compatible = "jedec,spi-nor"; reg = <0x0>; spi-max-frequency = <50000000>; #address-cells = <1>; #size-cells = <1>; }; }; ~~~ ![](https://box.kancloud.cn/611c8c327abb212991c3d0c02b0cf6d8_954x809.jpg) 添加對jffs2文件系統的支持,路徑在`File systems > Miscellaneous filesystems-> Journalling Flash File System v2 (JFFS2) support` ![](https://box.kancloud.cn/3be64c60667c0aa3a906f095171d1fda_1396x746.png) 退出菜單配置并編譯內核和dts ~~~ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs ~~~ # 3. 準備鏡像文件 首先選擇rootfs文件系統,我是用的是群朋提供的最小根文件系統rootfs-brmin.tar.gz,大小只有3M左右,下載地址在 ~~~ https://pan.baidu.com/share/link? shareid=1432204556&uk=3658413294#list/path=%2F Lichee Zero>zero_imager.zip ~~~ Flash支持jffs2文件系統格式,所以需要使用此該rootfs制作jffs2文件系統鏡像、 下載jffs2文件系統制作工具 `apt-get install mtd-utils` 解壓 rootfs-brmin.tar.gz `tar xzvf rootfs-brmin.tar.gz` 總空間是16M-1M-64K-4M=0xAF0000 `mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img` 頁大小0x100 256字節 塊大小0x10000 64k jffs2分區總空間0xAF0000 jffs2.img是生成的文件系統鏡像。 最后將uboot,dtb,kernel,rootfs打包成一個系統鏡像,命令如下; ~~~ dd if=/dev/zero of=flashimg.bin bs=16M count=1 dd if=../ubootmainline/u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc dd if=../zero41y/linux-zero-4.10.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc dd if=../zero41y/linux-zero-4.10.y/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc dd if=../zero_imager/jffs2/jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc ~~~ 第一步:生成一個空文件,大小是16MB 第二步:將uboot添加到文件開頭 第三步:將dtb放到1M偏移處 第四步:將kernel放到1M+64K偏移處 第五步:將rootfs放到1M+64K+4M偏移處 偏移大小是seek,單位是KB。 執行完畢后生成鏡像文件flashimg.bin # 4.燒寫鏡像 下載sunxiflash燒寫工具, `git clone -b spi-rebase https://github.com/Icenowy/sunxi-tools.git` 注意是spi-rebase分支。 進入工具目錄執行make. Zero有一個usb下載模式稱為fel模式。zero的啟動順序是先sd卡然后spiflash。如果sd卡啟動檢測失敗(沒有sd卡或者sd卡中沒有啟動ubootspl),然后spiflash也啟動檢測失敗(沒有spiflash或者spiflash中沒有啟動ubootspl),那么會自動進入fel模式。 所以當你的spiflash還沒有啟動鏡像的時候你拔掉sd上電會自動進入fel模式。 如果你的spiflash已經有了啟動鏡像,那么需要在sd卡中燒入一個sunxi提供的啟動工具(dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8),那么插入該sd卡啟動會進入fel模式;還有另一種方法,擦除spiflash內容上點也會進入fel模式。 進入fel模式后使用usb數據線連接pc和zero,進入sunxi-tool目錄 執行sudo ./sunxi-fel version會顯示硬件版本信息。 執行sudo ./sunxi-fel spiflash-info會顯示spi flash信息。 執行如下命令燒入我們前邊制作好的鏡像文件 `sudo ./sunxi-fel -p spiflash-write 0 ../bootimg/flashimg.bin` ![](https://box.kancloud.cn/30a15ac70a49ffa8e966700b72d91478_1088x83.jpg) 等待大概5分鐘,燒寫完成,如果沒有意外重新上電zero那么就會進入linux系統了,賬號是root沒有密碼。 ![](https://box.kancloud.cn/94cba1c9e4539c2e54836d28a8bbe12b_1281x1002.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看