日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

正点原子 linux 开发板学习 uboot 篇 一

發(fā)布時間:2023/12/15 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正点原子 linux 开发板学习 uboot 篇 一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

源碼選擇

出廠可以直接使用 原子出廠源碼, 出廠源碼會隨時修復(fù)bug或者添加新的驅(qū)動以兼容正點原子的其他模塊

學(xué)習(xí)的時候

U-Boot 燒寫與啟動

uboot 啟動位置根據(jù)撥碼開關(guān)

燒寫 通過.imxdownload 工具把 編譯后的u-boot.bin 燒進(jìn)sd 卡

/imxdownload u-boot.bin /dev/sdd

U-Boot 輸出信息詳解

U-Boot 2016.03 (Apr 12 2019 - 02:33:00 +0800)

/*版本 和當(dāng)前時間*/

CPU: Freescale i.MX6ULL rev1.1 69 MHz (running at 528MHz)

/*飛思卡爾單片機(jī)? imx屬于飛思卡爾 被NXP收購 */

CPU: Industrial temperature grade (-40C to 105C) at 46C

/*CPU溫度 */

Reset cause: POR

/*復(fù)位原因 POR*/

Board: MX6ULL 14x14 EVK

/*板卡名稱*/

I2C: ready

DRAM: 512 MiB

MMC: FSL_SDHC: 0, FSL_SDHC: 1

/*IMX6ull 支持2個MMC/SD卡控制器? ?FSL_SDHC(0)? 接SD卡? ?FSL_SDHC(1)?接EMMC*/

Display: ATK-LCD-7-1024x600 (1024x600)

Video: 1024x600x24

/*上2行 表示LCD型號*/

In: serial

/*標(biāo)準(zhǔn)輸入終端? 此處串口*/

Out: serial

/*標(biāo)準(zhǔn)輸入終端? 此處串口*/

Err: serial

/*標(biāo)準(zhǔn)輸入終端? 此處串口*/

switch to partitions #0, OK

mmc0 is current device

/*切換到emmc的第0分區(qū)。因為當(dāng)前的uboot 是emmc版本的 也就是從emmc啟動*/

Net: FEC1

/*網(wǎng)口信息? 用的網(wǎng)口1*/

Normal Boot

/*正常啟動? 也就是說uboot 要從 emmc? 讀取環(huán)境變量 和參數(shù)信息啟動linux內(nèi)核了*/

Hit any key to stop autoboot: 0

/*倒計時*/

U-Boot 常用命令

  • help? or ???查看支持的所有命令

  • help or ? + 命令名稱 查看該命令用法

信息查詢命令

  • bdinfo? ? 打印boot 參數(shù)地址位置? DRAM起始地址 網(wǎng)卡信息? 波特率信息? ?堆棧指針等信息

????????????????????????????????

  • printenv? 打印環(huán)境變量

??

  • version? 查看 boot版本號

環(huán)境變量操作命令

  • setenv? bootdelay 5? ?設(shè)置
  • saveenv? ? ? ? ? ? ? ? ? ? ?保存

? ?

  • setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

設(shè)置多個值的環(huán)境變量 用 ' ' 包含? 各組值 用 空格隔開

  • setenv? author kongbin? ?當(dāng)沒有此變量? 該命令會 創(chuàng)建環(huán)境變量
  • ? ? ?setenv author? ? ? ? ? ? ? ? ?無參, 刪除環(huán)境變量

網(wǎng)絡(luò)操作命令

setenv ipaddr 192.168.1.50? ? ? 板卡IP地址

setenv ethaddr b8:ae:1d:01:00:00

setenv gatewayip 192.168.1.1

setenv netmask 255.255.255.0? ? ? ? ??

setenv serverip 192.168.1.253? ? 服務(wù)器IP地址? 也就是ubutun 主機(jī)IP地址

saveenv

  • ping 命令? ?例 ping 192.168.1.105
  • dhcp 命令? 從路由器獲取IP地址? 該命令還會通過TFTP來啟動linux 內(nèi)核

  • nfs [loadAddress] [[hostIPaddr:]bootfilename]?? 網(wǎng)絡(luò)文件系統(tǒng)命令? 通過nfs 協(xié)議獲取網(wǎng)絡(luò)文件文件到 指定地址

例如:nfs 80800000 192.168.1.253:/home/zuozhongkai/linux/nfs/zImage

? ? ? ? ? ? 把主機(jī)中的 zImage 加載到DRAM的0x8080000 地址處

  • tftp [loadAddress] [[hostIPaddr:]bootfilename] 通過tftp協(xié)議 獲取網(wǎng)絡(luò)文件文件到 指定地址

ubutun 主機(jī)端設(shè)置

sudo apt-get install tftp-hpa tftpd-hpa

sudo apt-get install xinetd

在目錄/etc/xinetd.d/ 中創(chuàng)建??tftp文件

并輸入以下內(nèi)容

server tftp {socket_type = dgramprotocol = udpwait = yes user = root server = /usr/sbin/in.tftpdserver_args = -s /home/kongbin/linux_aph/tftpboot/ disable = no per_source = 11 cps = 100 2 flags = IPv4 }

并修改? ?/etc/default/tftpd-hpa? ? 中 TFTP_DIRECTORY的值為 tftp 目錄

EMMC 和SD卡操作命令

  • mmc? 一系列命令 操作emmc 和sd 卡
    • mmc info? ?
    • mmc read? ?addr blk# cnt? ? ? 從mmc 讀取內(nèi)容到 dram中? ? ?
    • mmc write? ?addr blk# cnt? ? ? 把dram中的數(shù)據(jù)寫入到 mmc中
    • mmc rescan? ? 掃描mmc社保
    • mmc part? ? ? ? ?列出mmc設(shè)備分區(qū)
    • mmc dev? ? ? ? 切換mmc設(shè)備? ?例如 mmc dev 0? //切換到sd卡? ?0:sd卡? 1:eMMC
    • mmc list
    • mmc hwpartition
    • mmc rst
    • mmc setdsr

  • mmc part? 可以查看emmc 分區(qū)情況? ?完整的應(yīng)該是?

part 0 : uboot? ?

part1:linux內(nèi)核 image? 和 設(shè)備樹 dts?

part2:根文件系統(tǒng)

  • mmc dev 1 2? 把emmc 的分區(qū)2 設(shè)置為當(dāng)前mmc設(shè)備? 然后就可以完成一些讀寫操作

  • mmc read? addr blk# cnt? ?emmc >> dram? addr DRAM地址? blkMMC:塊地址?cnt:塊數(shù)量

例如 mmc read 80800000 600 10? ?0x10 = 16? ? ?一個扇區(qū)512? ? ? 16? * 512? = 0x2000

讀完可以通過 md.b? 80800000 2000? 查看DRAM中的內(nèi)容

  • mmc write? addr blk# cnt? ??dram>> write

? ? 綜合應(yīng)用 更新sd 卡中uboot程序?

????????tftp 80800000 u-boot.imx

? ? ? ? mmc dev 0 0?

? ? ? ?mmc write 80800000 2 32E

? ? 綜合應(yīng)用 更新emmc 卡中uboot程序?

????????tftp 80800000 u-boot.imx? ? //下載u-boot.imx 到dram中

????????mmc dev 1 0? ? ? ? ? ? ? ? ? ? ? ?//切換到emmc的分區(qū)0

? ? ? ??mmc write 80800000 2 32E //燒寫u-boot.imx到emmc中

? ? ? ? mmc partconf 1 1 0 0 //分區(qū)配置, EMMC需要這一步!? ? ? ? ?

FAT? 一系列操作命令??

? ? ? ? 對SD、EMMC 存儲的文件進(jìn)行操作

  • fatinfo <interface> [<dev[:part]>]? 查詢文件系統(tǒng)信息? ?例如?fatinfo mmc 1:1

  • fatls??<interface> [<dev[:part]>] [directory]? ?列出該目錄下 有哪些文件? 和linux中的ls 命令類似

  • fstype <interface> <dev>:<part>? ?查詢分區(qū)文件系統(tǒng)類型
  • fatload <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]? 加載文件到DRAM

? ? ? ? 例如?fatload mmc 1:1 80800000 zImage? 加載zImage? 到dram中

boot?操作命令? 重中之中

? ? ? ? uboot 本質(zhì)工作就是引導(dǎo)linux??

  • bootz [addr [initrd[:size]] [fdt]]??

? ? ? ? addr: linux 內(nèi)核 imge dram地址

????????initrd是initrd文件在dram中的地址? ?可用-代替

? ? ? ? fdt:設(shè)備樹地址

? ? ? ? 例:

????????tftp 80800000 zImage

????????tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb

????????bootz 80800000 - 83000000?

????????8080000 加載linux鏡像文件??

????????83000000??加載設(shè)備樹文件

? ? ? ?

  • bootm? ?參數(shù)、功能和 bootz類似

? ? ? ??boot 命令

最重要的2個環(huán)境變量

bootcmd?

uboot啟動后會運行環(huán)境變量 bootcmd 中的命令 去加載 內(nèi)核 和設(shè)備樹

調(diào)試階段 可通過tfp 從服務(wù)器獲取 文件 加載?內(nèi)核 zImage 文件? 和設(shè)備樹文件

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83000000'

生產(chǎn)階段? 從emmc中 加載文件

把linux keneral 和? 設(shè)備樹 (dts)文件?

setenv bootcmd fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-14x14-emmc-4.3-800*480-c.dtb; bootz 80800000 - 83000000'

? ? ? ??

bootargs?

? 調(diào)試階段 通過 nfs 加載根文enü

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.1.14:/home/kongbin/linux_aph/nfs/rootfs,v3 ip=192.168.1.50:192.168.1.14:192.168.1.1:255.255.255.0::eth0:off'

注意:nfs 服務(wù) 系統(tǒng)是ubutun18.04? 加個v3

生產(chǎn)階段? 從emmc的分區(qū)2 中加載根文件系統(tǒng)

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

bootz 命令啟動流程如下圖:

?

? ? ??

????????

????????

總結(jié)

以上是生活随笔為你收集整理的正点原子 linux 开发板学习 uboot 篇 一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。