日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式

發布時間:2023/12/15 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

>

1). 簡介本文引用地址:http://www。eepw。com。cn/article/201607/294237.htm

本文簡單介紹ARM嵌入式設備基于嵌入式Linux操作系統時候的啟動步驟和啟動方式, 區別與X86平臺,ARM平臺下并沒有一個標準的啟動步驟,不同ARM SoC都會使用各自定義的boot ROM來實現啟動過程,不過大體上面都包含有一些基本步驟。本文就基于Toradex ARM計算機模塊和配套載板來介紹基于Freescale i。MX6 ARM嵌入式設備的啟動步驟和方式。

2). 啟動步驟

a). 電源上電,系統Reset。

b). CPU內部boot ROM讀取, strapping GPIO數值鎖定。

c). 根據strapping GPIO值和SoC 內部fuse設置確定用于啟動的設備。

d). 從啟動設備起始位置讀取用于配置DDR RAM和定位boot loader的配置信息。對于i。MX6平臺,則使用"image vector table (IVT)" 和 "device configuration data (DCD)" ,如果從NAND設備啟動,則還包括 "boot control blocks (BCB)"。

e). DDR RAM被boot ROM初始化。

f). boot loader從啟動設備復制到RAM執行,至此系統控制交由boot loader.也是從這里,一些定制代碼才可以在boot loader里面開始執行。當然也有一些SoC是先將boot loader復制到SDRAM執行后再由boot loader來初始化DDR RAM。

Toradex ARM核心板使用定制化的U-boot作為boot loader,下面就基于此來繼續boot loader加載后的啟動過程。

g). U-Boot從啟動設備上面讀取環境變量,如果變量數據損壞或者不存在,則會提示"*** Warning - bad CRC, using default environment" ,然后加載默認初始設置.

h). U-Boot通過分析環境變量獲得kernel和rootfs存儲位置,以及所需的kernel command line

i). U-Boot 自動檢測系統RAM和eMMC/Nand Flash容量和參數

j). U-Boot 設置以太網口MAC地址,并配置好硬件準備加載Linux kernel

k). U-Boot 加載Linux kernel到RAM,至此系統控制權則轉移到kernel來處理

l). 系統Kernel初始化Linux,加載rootfs,最后啟動"init"來初始化Linux user space

3). 啟動方式

a). 默認方式, U-Boot, kernel和rootfs都位與模塊自帶的eMMC上,全部從eMMC啟動。通常情況下的基本模式

b). U-Boot位于eMMC,從eMMC啟動;而kernel和rootfs位于SD卡,從SD卡啟動。常用于切換不同的kernel和rootfs版本

c). U-Boot位于eMMC,從eMMC啟動;而kernel從TFTP加載,rootfs從NFS加載。常用于kernel和application開發調試階段

4). 不同啟動方式演示

這里使用Toradex Apalis i。MX6Q 計算機模塊配合Apalis Eva 開發載板來進行測試,平臺基本的操作上手指南請見這里。

軟件使用Toradex官方發布的Linux V2.5beta3版本,請從這里下載。

a). 全部從eMMC啟動

模塊默認的U-Boot設置即為全部從eMMC啟動,開機上電即可

b). Kernel和rootfs從SD卡啟動

./ 準備SD卡:將SD卡(幾百MB容量以上,這里使用8GB)分為2個分區,第一個分區為FAT32格式,一般幾十MB即可,這里演示操作為1GB;另外一個分區為ext3格式,分配為剩下SD卡容量。

----------------------------------

$ sudo fdisk /dev/sdc

...

命令(輸入 m 獲取幫助): p

Disk /dev/sdc: 7744 MB, 7744782336 bytes

255 heads, 63 sectors/track, 941 cylinders, total 15126528 sectors

Units = 扇區 of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

設備 啟動 起點 終點 塊數 Id 系統

/dev/sdc1 2048 2099199 1048576 c W95 FAT32 (LBA)

/dev/sdc2 2099200 15126527 6513664 83 Linux

$ sudo mkfs.vfat -F 32 -n boot /dev/sdc1

$ sudo mkfs。ext3 -L fs /dev/sdc2

----------------------------------

./ 制作啟動SD卡

// 復制Linux image 壓縮包里面的kernel和device tree文件到FAT32分區

----------------------------------

$ cd .../Apalis_iMX6_LinuxImageV2.5/apalis-imx6_bin

$ cp uImage--3.14.28+gitr0632def1c9981e3974f724025f39b2c1588d8ee6-V2.5b3-apalis-imx6-20151215145612.bin /media/username/boot/uImage

$ cp uImage--3.14.28+gitr0632def1c9981e3974f724025f39b2c1588d8ee6-V2.5b3-imx6q-apalis-eval-20151215145612.dtb /media/simon/boot/imx6q-apalis-eval.dtb

----------------------------------

// 復制Linux image 壓縮包里面的rootfs文件夾內容到ext3分區

----------------------------------

$ cd .../Apalis_iMX6_LinuxImageV2.5

$ sudo cp -Ppr rootfs/* /media/simon/fs/

----------------------------------

./ 將SD卡插入Apalis Eva載板8-bit SD卡插槽, 開機上電進入uboot

----------------------------------

Apalis iMX6 # printenv

...

fdt_file=imx6q-apalis-eval.dtb //確保device tree文件和上面FAT32分區里面的命名一致

...

Apalis iMX6 # run sdboot

----------------------------------

./ 啟動后就可以進行正常的應用開發測試了.

c). TFTP/NFS加載kernel/file system啟動

./ 默認目標版系統和開發主機已經在同一局域網內并通過網內DHCP服務器自動取得IP地址,如果需要手動搭建DHCP服務器,請參考這里。

./ 配置TFTP Server

// 在Ubuntu 開發主機通過下面命令建立TFTP Server

----------------------------------

$ sudo apt-get install tftpd-hpa

$ sudo vi /etc/default/tftpd-hpa

//默認tftp server配置,也可以更換目錄,不過需要修改目錄group為”nogroup”

$ sudo vi /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/var/lib/tftpboot"

TFTP_ADDRESS="[::]:69"

TFTP_OPTIONS="--secure"

$ sudo service tftpd-hpa start

//如已經啟動,重新加載配置,則可運行

$ sudo service tftpd-hpa force-reload

----------------------------------

// 復制kernel和device tree文件到TFTP Server文件夾

----------------------------------

$ cd .../Apalis_iMX6_LinuxImageV2.5/apalis-imx6_bin

$ sudo cp uImage--3.14.28+gitr0632def1c9981e3974f724025f39b2c1588d8ee6-V2.5b3-apalis-imx6-20151215145612.bin /var/lib/tftpboot/uImage

$ sudo cp uImage--3.14.28+gitr0632def1c9981e3974f724025f39b2c1588d8ee6-V2.5b3-imx6q-apalis-eval-20151215145612.dtb /var/lib/tftpboot/imx6q-apalis-eval.dtb

----------------------------------

./ 配置NFS Server

// 在Ubuntu 開發主機通過下面命令建立NFS Server

----------------------------------

$ sudo apt-get install nfs-kernel-server

$ sudo vi /etc/exports

//增加下面NFS配置, ‘10.20.1.111/24’為開發主機IP/Mask配置

/srv/nfs 10.20.1.111/24(no_root_squash,no_subtree_check,rw,fsid=root)

$ sudo service nfs-kernel-server restart

----------------------------------

// 復制rootfs文件到NFS Server文件夾

----------------------------------

$ cd .../Apalis_iMX6_LinuxImageV2.5

$ sudo cp -Ppr rootfs/* /srv/nfs/

----------------------------------

./ 配置Apalis i。MX6目標系統

//開機上電進入Uboot,修改如下參數

----------------------------------

# setenv serverip ‘10.20.1.111’ //TFTP Server IP

# setenv nfsargs ‘ip=10.20.1.115:10.20.1.111:10.20.1.1:255.255.255.0::eth0:on root=/dev/nfs nfsroot=10.20.1.111:/srv/nfs rw netdevwait’

// ip = 目標板IP:NFS Server IP:網關:Mask

// 啟動NFS boot

# run nfsboot

----------------------------------

5). 總結

由上可見,在ARM平臺使用和開發的時候可以靈活利用各種啟動方式,提供更為方便和高效的開發或使用過程。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的嵌入式linux的运行过程,ARM嵌入式设备Linux系统启动步骤和方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。