系統由uboot、核心、檔案系統三個部分組成,完整體驗過程就是對三個部分分別進行打補丁、編譯和燒寫。另外體驗簡單驅動和網路檔案系統使用。
使用的虛擬機器是ubuntu18.04,arm-linux-gcc等工具用的現成的,把目錄加入環境變數就可用,需要裝一些32位庫
sudo apt install lib32ncurses5
tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6
patch -p1 < ../u-boot-1.1.6_jz2440.patch //-p1 表示忽略第一級目錄
make 100ask24x0_config
make
tar xjf linux-2.6.22.6.tar.bz2
cd linux-2.6.22.6
patch -p1 < ../linux-2.6.22.6_jz2440.patch
mv ../4.3寸lcd_mach-smdk2440.c arch/arm/mach-s3c2440/mach-smdk2440.c //替換4.3寸原始碼
cp config_ok .config
make uimage //在arch/arm/boot目錄下生成uimage
編譯linux2.6.22.6出錯:mixed implicit and normal rules: deprecated syntax
系統的make工具太新,需要修改如下兩行:
#416行前面加個%:
%config %config: scripts_basic outputmakefile force
#1449 行去掉前面的/ :
%/: prepare scripts force
編譯後沒有uimage檔案: 需要在u-boot-1.1.6目錄下執行make all
,編譯後會在tools中生成乙個mkimage工具,將其拷貝到環境變數目錄下(arm-linux工具bin)
分為yaffs2和jffs2兩種格式,只嘗試了用mkyaffs2image工具編譯最小檔案系統。
mkyaffs2image fs_mini_mdev xz.yaffs2
//使用測試程式,在虛擬機器編譯
make //編譯出*.ko檔案
arm-linux-gcc -o firstdrvtest firstdrvtest.c
//在開發板上
insmod first_drv.ko
./firstdrvtest on //點亮led
檔案系統位置設定:
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.11:/home/xz/work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.12:192.168.1.11:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttysac0
同樣如果是jffs2格式的話要加 rootfstype=jffs2
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.11:/home/xz/work/nfs_root/tmp/fs_mini_mdev ip=192.168.1.12:192.168.1.11:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttysac0 rootfstype=jffs2
板子上啟動 (rootfstype=jffs2):
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttysac0
檢視可掛載目錄 exportfs
虛擬機器掛載命令 mount -t nfs serverip:/shared /掛在哪
開發板掛載命令 mount -t nfs -o nolock,vers=2 serverip:/shared /mnt
嵌入式初體驗
先建立main1.c檔案並通過gedit命令輸出以下 include include sub1.c int main 再建立sub1.c檔案並通過gedit命令輸出下列 float x float a,float b 通過gcc編譯 再執行main檔案完成子檔案的呼叫 在c語言下的執行 建立make...
嵌入式基礎
以應用為中心 以計算機技術為基礎,軟硬體可裁剪,應用系統對功能 可靠性 成本 體積 功耗和應用環境有特殊要求的專用計算機系統。是將應用程式 作業系統和計算機硬體整合在一起的系統。1.嵌入式系統的構成 嵌入式微處理器 嵌入式作業系統 外圍應用裝置 應用軟體系統。2.嵌入式處理器 嵌入式微處理器 嵌入式...
嵌入式基礎
整體思路 time指標指向該暫存器,所以定義乙個timeop位域,利用time指標將暫存器中的值放至timeop中,儲存後面暫存器讀取到的結果再經過修改返回到暫存器裡 用16位指標time指向這裡使用的16位暫存器,用來讀取和改變暫存器值 借助強制轉換的方式將值傳給time指標,指標將值給暫存器,將...