• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-TF卡燒錄流程之燒寫原理

2024/12/31
1429
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

TF卡燒寫原理與OTG燒錄原理類似,撥碼開關(guān)撥到TF卡啟動(dòng)后,先會(huì)到TF卡中讀取sdrun目錄下的uboot.imx文件,uboot啟動(dòng)后會(huì)初始化DDR,然后將zImage、imx6ull-14x14-evk.dtb、ramdisk.img.u加載到內(nèi)存中,最后內(nèi)核掛載ramdisk文件系統(tǒng),在虛擬文件系統(tǒng)中將target目錄下的鏡像燒錄到EMMC中,主要的燒錄過程在ramdisk中實(shí)現(xiàn),下面主要分析ramdisk中的燒錄流程。

將ramdisk.img.u拷貝到/home/elf/work/路徑下,使用dd命令將頭部64字節(jié)的數(shù)據(jù)去除:

elf@ubuntu:~/work$ dd if=ramdisk.img.u of=ramdisk bs=64 skip=1

127461+1 records in

127461+1 records out

8157550 bytes (8.2 MB, 7.8 MiB) copied, 0.172201 s, 47.4 MB/s

將ramdisk重命名為ramdisk.gz,并解壓:

elf@ubuntu:~/work$ mv ramdisk ramdisk.gz

elf@ubuntu:~/work$ gunzip -v ramdisk.gz 

ramdisk.gz: 56.3% -- replaced with ramdisk

新建tmp目錄并使用cpio解壓ramdisk:

elf@ubuntu:~/work$ mkdir tmp

elf@ubuntu:~/work$ cd tmp/

elf@ubuntu:~/work/tmp$ sudo cpio -idv < ../ramdisk

此時(shí)使用ls命令查看,tmp目錄下生成了一個(gè)文件系統(tǒng):

elf@ubuntu:~/work/tmp$ ls

bin   dev  header  init  linuxrc  mksdcard.sh  proc  sbin  tmp  var

boot  etc  home    lib   media    mnt          run   sys   usr

使用vim打開linuxrc文件,這是進(jìn)入虛擬文件系統(tǒng)后運(yùn)行的一個(gè)文件,進(jìn)入到腳本后先進(jìn)行掛載各個(gè)系統(tǒng)文件:

set -e

export PATH=/sbin:/bin:/usr/sbin:/usr/bin




mount -t sysfs none /sys

mount -t proc none /proc

mount -t devtmpfs none /dev

運(yùn)行mksdcard.sh腳本,對EMMC進(jìn)行分區(qū),這個(gè)腳本的內(nèi)容與otg燒錄時(shí)的分區(qū)腳本一樣,所以此處不進(jìn)行講解。

echo "format emmc" > /dev/tty0

/bin/sh /mksdcard.sh /dev/mmcblk1

使用dd命令清除/dev/mmcblk1中存放uboot環(huán)境變量的空間:

dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=384 conv=fsync count=129

循環(huán)檢測是否能夠識(shí)別到TF卡,/dev/mmcblk0是TF卡生成的節(jié)點(diǎn):

while [ ! -e /dev/mmcblk0 ]

do

       sleep 1

       echo "wait for /dev/mmcblk0 appear"

       echo "wait for /dev/mmcblk0 appear" > /dev/tty0

done

新建TF卡和EMMC的掛載目錄,并將TF卡掛載上:

mkdir -p /run/mmc0

mkdir -p /run/mmc1

mount /dev/mmcblk0p1 /run/mmc0

燒錄uboot:

echo "burn uboot" > /dev/tty0

echo 0 > /sys/block/mmcblk1boot0/force_ro

dd if=/run/mmc0/target/u-boot.imx of=/dev/mmcblk1boot0 bs=512 seek=2

echo 1 > /sys/block/mmcblk1boot0/force_ro

Mmc bootpart enable 1 1 /dev/mmcblk1

格式化EMMC的fat分區(qū),并掛載到文件系統(tǒng):

echo "create fat partition" > /dev/tty0

mkfs.vfat /dev/mmcblk1p1

mount /dev/mmcblk1p1 /run/mmc1

燒錄內(nèi)核鏡像:

echo "burn zImage" > /dev/tty0

cp /run/mmc0/target/zImage /run/mmc1/zImage

echo "burn zImagebak" > /dev/tty0

cp /run/mmc0/target/zImage /run/mmc1/zImagebak

燒錄logo圖片:

echo "burn logo"   > /dev/tty0

cp /run/mmc0/target/logo.bmp /run/mmc1/logo.bmp

燒錄設(shè)備樹:

echo "burn dtbs" > /dev/tty0

cp /run/mmc0/target/imx6ull-elf1-emmc.dtb /run/mmc1/imx6ull-elf1-emm.dtb

umount /run/mmc1

格式化ext3分區(qū)并燒錄文件系統(tǒng):

echo "burn rootfs" > /dev/tty0

mkfs.ext3 -E nodiscard /dev/mmcblk1p2

mount -t ext3 /dev/mmcblk1p2 /run/mmc1

tar xvf /run/mmc0/target/rootfs.tar.bz2 -C /run/mmc1

tar xvf /run/mmc0/target/modules.tar.bz2 -C /run/mmc1

umount /run/mmc1




umount /run/mmc0

打印燒錄完成信息:

echo "Update Complete!!!!!!!"  > /dev/tty0

echo "Update Complete!!!!!!!"

控制led燈秒閃,指示燒錄完成:

echo none > /sys/class/leds/heartbeat/trigger

while true

do

        echo 1 > /sys/class/leds/heartbeat/brightness

        sleep 1

        echo 0 > /sys/class/leds/heartbeat/brightness

        sleep 1

done
飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺(tái)廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦