<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      XiShiYuYuan's Blogs  
      其實,我只會打游戲。。。

      基礎小知識

      核心板載存儲介質:eMMC NAND FLASH

      dtb格式文件:設備樹文件

      使用SD卡燒寫系統鏡像時,盡量使用FAT32格式的SD卡,使用NTFS很可能就不支持,無法掛載,因為Windows,微軟有版權

      使用SDFormatter 軟件進行SD卡格式化

      在Ubuntu下復制文件時最好執行一下 sync 命令,將緩存中的文件同步到移動設備當中

      sudo fdisk -l 查看掛在的移動設備

      uboot:引導linux啟動,最主要的工作就是初始化DDR,因為Linux是運行在DDR里面的,uboot的主要目的就是為系統啟動做準備

      ddr是ram,掉電之后是數據全部丟失。

      uboot、linux、設備樹文件等等統稱系統鏡像

      uboot命令使用

      0x8000 0000是ddr的起始地址

      0x8780 0000是uboot的起始地址,需要把編譯好的u-boot.bin文件拷貝到87800000的地址處,也是鏡像的起始地址

      go 87800000跳轉到87800000的地方運行

      常用命令

      查看某一個命令幫助信息:

      ?命令名  或  help 命令名
      

      信息查詢:

      1、bdinfo  查看板子信息				
      
      2、printenv(print)查看當前板子的環境變量
      
      3、setenv 	可以設置環境變量,也可以自定義環境變量,也可以刪除環境變量
      
      4、saveenv 	保存環境變量
      

      內存操作命令

      1、md  用于顯示內存值
      
      2、nm  用于修改指定地址的內存值
      
      3、mm  修改指定地址內存值的,使用 mm 修改內存值的時候地址會自增,而使用命令 nm 的話地址不會自增
      
      4、mw  用于使用一個指定的數據填充一段內存
      
      5、cp  數據拷貝命令
      
      6、cmp  比較命令,用于比較兩段內存的數據是否相等
      

      網絡操作命令

      1、ping命令重點
      
      2、dhcp命令
      
      3、nfs命令 重點	目的就是為了調試程序。
      
      4、tftp命令 重點	當Windows下的文件拷貝到Ubuntu時,使用tftp命令下載到板子上就會出現權限問題
      

      uboot源碼目錄文件

      fs:文件系統

      include:頭文件

      dts:設備樹

      system.map: u-boot.map 內存映射文件

      uboot頂層Makefile分析

      vscode中:shift+Alt+F,格式化文檔 shift+Alt+左鍵可以豎排選擇 鼠標中鍵也可豎排選擇

      ? ctrl+p可以搜索文件

      在makefile里打印信息:

      mytest:

      ? echo:xxx=$(xxx)

      mytest:

      ? @echo:xxx=$(xxx) 加@可以不打印echo指令

      uboot啟動流程

      .s .S為匯編程序文件

      r0寄存器中保存著:0x9FF47000:gd->relocaddr就是uboot重定位后的起始地址,uboot共0xA8EF4大小

      r1保存著原先起始地址:0x87800000

      r4=r0-r1,0x18747000即保存偏移量

      r2=0x8785dc6c:整個鏡像的最終地址

      machineID對于現在的Linux來說沒用了,因為使用的是設備樹

      VBAR寄存器為重定位后的中斷向量表起始地址

      do_bootz函數

      使用bootz命令啟動Linux內核

      先將鏡像文件和設備樹文件下載到對應地址:

      tftp 80800000 zImage
      
      tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb
      
      使用bootz命令啟動:bootz 80800000 - 83000000
      

      uboot移植實驗

      編譯uboot:使用shell腳本的那三條命令進行編譯

      在uboot根目錄下:

      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean		清理下工程
      
      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
      

      配置后會生成 .config 文件

      之后就是編譯:

      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- V=1 -j12
      

      編譯完成后會生成 u-boot.bin、u-boot.imx 文件

      燒寫到SD卡:

      將imxdownload軟件拷貝到uboot根目錄下,將u-boot.bin文件燒寫到SD卡:

      ./imxdownload u-boot.bin /dev/sdf
      

      網絡驅動修改:

      網卡1 ENET1 FEC0

      網卡2 ENET2 FEC1

      啟動Linux內核測試

      從emmc啟動

      EMMC 是有 3 個分區的:

      第 0 個分區存放 uboot(原始的分區);

      第 1 個分區會把它格式化成FAT文件系統,存放著Linux 鏡像文件和設備樹;

      第 2 個分區存放根文件系統。

      1、首先查看EMMC里面是否有系統:linux鏡像zImage和.dtb文件。

      先將當前設備切換到EMMC:mmc dev 1	//切換到EMMC
      
      fatls mmc 1:1 	//查看EMMC分區1里面的文件
      
      fatload mmc 1:1 80800000 zImage 	//將zimage下載到DDR的0x80800000處
      
      fatload mmc 1:1 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb 	//將dtb讀取到0X83000000
      
      bootz 80800000 – 83000000 	//啟動內核,如果內核啟動成功,說明uboot支持emmc啟動,驗證成功。
      
      從網絡啟動
      tftp 80800000 zImage		//從tftp服務器下載zimage
      
      tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb 		//從tftp服 務 器 下載.dtb
      
      bootz 80800000 – 83000000 		//啟動系統
      

      bootcmd和bootargs

      boorcmd:命令列表,有多條指令,目的就是啟動Linux內核

      bootargs:命令行參數,會由uboot傳遞給linux內核

      uboot圖形化配置

      使用make menuconfig進入圖形化配置頁面

      所有的配置信息只是臨時存到了.config文件里面,當清理工程后,.config就會被清掉

      配置完成后,save保存配置文件xxx_defconfig,相當于拷貝了一份.config文件,后續可load加載配置文件繼續配置

      Linux內核編譯

      Uboot編譯步驟:

      1、distclean清理工程,

      2、make xxx_defconfig使用默認配置文件配置工程

      3、make -j12編譯,

      4、make menuconfig,打開配置界面,進行配置。

      Linux編譯:

      Linux內核的默認配置文件保存在arch/arm/configs。編譯的時候提示如下錯誤:

      'arch/arm/compressed/piggy.lzo' failed
      
      'arch/arm/compressed/vmlinux' failed
      

      如果遇到上述錯誤,請:Sudo apt-get install lzop

      編譯完成后會輸出:arch/arm/boot/zImage is ready

      zImage存放在./arch/arm/boot/zImage

      .dtb存放在:./arch/arm/boot/dts/xxx.dtb

      編譯設備樹文件:在Linux頂層目錄下執行:make imx6ull-14x14-emmc-7-1024x600-c.dtb

      Linux內核源碼目錄分析

      dts:device tree設備樹

      block:存放塊設備,NAND fash emmc就叫塊設備

      make xxx.defconfig之后就會生成.config文件

      Linux內核移植

      準備兩個文件:一個就是imx6_alientek_emmc_defconfig默認配置文件。另一個就是:imx6ull-alientek-emmc.dts編譯出來就是.dtb文件。

      1、復制arch/arm/configs/imx_v7_mfg_defconfig文件為imx_alientek_emmc_defconfig

      2、復制arch/arm/boot/dts/imx6ull-14x14-evk.dts文件為imx6ull-alientek_emmc.dts

      3、修改arch/arm/boot/dts/Makefile,添加imx6ull-alientek_emmc.dtb信息

      注:Makefile中的 \ 后不能有空格

      編譯完后就會有zImage和.dtb文件,拷貝到板子即可啟動Linux

      CPU主頻和網絡驅動修

      1、修改驅動之前,要先保證板子能夠正常啟動。2、根文件系統處理好,使用現成根文件系統。保證EMMC燒寫了系統,設置bootcmd和bootargs。

      Bootcmd設置

      默認從網絡啟動,通過TFTP:

      setenv bootcmd ‘tftp 80800000 zImage;tftp 83000000 imx6ull-alientek_emmc.dtb;bootz 80800000 - 83000000;’
      
      saveenv
      

      設置好bootcmd后,復位板子后就會自動執行命令

      Bootargs設置

      根文件系統存放在EMMC的分區2里面,命令如下:

      setenv bootargs ‘console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw’
      

      mmcblk1p2:mmcblk1表示emmc,p2代表emmc第二個分區

      現 在 的 問 題 就 是EMMC驅 動 有 問 題 ,在imx6ull-alientek-emmc.dts中 找 到usdhc2節點。將usdhc2改為:

      &usdhc2 {
      
      ?	pinctrl-names = "default", "state_100mhz", "state_200mhz";
      
      ?	pinctrl-0 = <&pinctrl_usdhc2_8bit>;
      
      ?	pinctrl-1 = <&pinctrl_usdhc2_8bit_100mhz>;
      
      ?	pinctrl-2 = <&pinctrl_usdhc2_8bit_200mhz>;
      
      ?	bus-width = <8>;
      
      ?	non-removable;
      
      ?	status = "okay";
      
      };
      

      完了以后編譯設備樹。使用如下命令:make dtbs(代表編譯所有修改過的設備樹文件)

      根文件系統構建

      nfs相當于共享文件夾

      tftp則需要下載文件

      uboot階段,虛擬機ping板子是ping不同的

      軟件在arm下運行一定是使用交叉編譯器編譯,使用交叉編譯器編譯在Ubuntu下是執行不了的

      在Ubuntu下使用gcc編譯器編譯后,才能在Ubuntu運行

      編寫hello.c,測試軟件是運行在ARM開發板上,因此編譯的時候要使用交叉編譯器。

      編譯完成以后使用file命令查看可執行文件信息。

      應用程序后臺運行xxx &。 ./hello & 后臺運行就可以不妨礙終端使用

      關閉某個軟件后臺運行,輸入ps命令查看當前所有軟件的PID。查到hello的PID是77。通過 kill -9 77(PID).

      kill -9 77 kill -9是固定的

      Mfg Tool燒寫工具詳解

      1、mfgtool是NXP官方做的向I.MX系列燒寫系統的軟件,該軟件運行在windows下。

      可以燒寫uboot.imx、zImage、dtb,rootfs。通過USB燒寫。

      Mfgtool里面默認存放了NXP官方開發板的系統文件,

      2、基本原理向開發板燒系統分兩部分:

      ? 1、先向開發板的DDR下載一個Linux系統,

      ? 2、通過前面下載到DDR中的Linux系統完成最終的燒寫工作。

      L4.1.15_2.0.0-ga_mfg-tools\mfgtools-with-rootfs\mfgtools\Profiles\Linux\OSFirmware下有:files和firmware兩個文件夾。

      files里面保存著最終燒寫到開發板中的uboo.imx、zImage、dtb以及rootfs。Firmware里面保存著第一步的uboot.imx、zImage、dtb。

      燒寫自己的系統

      1、firmare下的文件名:

      u-boot-imx6ull14x14evk_emmc.imx	uboot
      
      zImage
      
      zImage-imx6ull-14x14-evk-emmc.dtb	//dtb文件
      

      2、files下的文件名:

      ?u-boot-imx6ull14x14evk_emmc.imx		  //uboot
      
      ?zImage	                                 //kernel
      
      ?zImage-imx6ull-14x14-evk -emmc.dtb	 //dtb
      
      ?rootfs_nogpu.tar.bz2	                //rootfs
      

      ? ↑↑↑ 將以上文件替換掉原來官方的文件

      再使用mfgtool工具燒寫到開發板:插上usb線,撥碼開關設置到USB啟動,SD卡彈出;后復位,執行.vbs燒寫腳本程序;燒寫完畢后先按stop,再按exit;后撥碼開關設置到emmc啟動

      posted on 2024-07-12 10:19  惜時與緣  閱讀(351)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 亚洲AV无码破坏版在线观看| 在线精品自拍亚洲第一区| 99久久精品费精品国产一区二区| 国产精品高清视亚洲乱码| 南安市| 人妻中文字幕亚洲一区| 亚洲欧美人成网站在线观看看| 2020年最新国产精品正在播放| 久热这里有精品视频在线| 亚洲真人无码永久在线| 国产偷自视频区视频| 美女扒开尿口让男人桶| 国产精品国产精品国产精品 | 国产男女黄视频在线观看| 中文字幕国产日韩精品| 在线播放国产精品一品道| 国产午夜A理论毛片| 丁香五月亚洲综合在线国内自拍| 国产一区日韩二区三区| 亚洲av午夜成人片| 浴室人妻的情欲hd三级国产| 亚洲精品第一区二区在线| 色欲aⅴ亚洲情无码av蜜桃| 久久国产乱子精品免费女| 精品无码国产一区二区三区av| 亚洲国产高清第一第二区| 夜夜添狠狠添高潮出水| 九九热免费在线播放视频| 99久久伊人精品综合观看| AV最新高清无码专区| 综合激情网一区二区三区| 中文字幕有码日韩精品| 日韩av日韩av在线| 丝袜美腿诱惑之亚洲综合网| 99国产欧美另类久久久精品| 国产最大成人亚洲精品| 日韩有码中文在线观看| 日韩一卡二卡三卡四卡五卡| 欧美白人最猛性xxxxx| 精品无码久久久久国产电影| 成人免费亚洲av在线|