Linux系统组成
?1 系統組成
? BootLoader:操作系統引導程序
? 內核:
? 文件系統:應用程序(用戶開發的、網上下載的)
2 安裝USB驅動
dongry@d-linux:~$ insmod usb_dnw.ko //安裝USB驅動 dongry@d-linux:~$ kernel:GuoQian USB driver for DMW! //出現這一句說明驅動安裝成功3 查看驅動是否啟動
dongry@d-linux:~$lsmod //查看驅動是否啟動當中出現usb dnw說明驅動已經啟動
4 Linux系統安裝
? 首先SEGGER J-FLASH ARM將引導安裝程序下載到NOR flash;(引導安裝程序通過JTAG下載到開發板的NOR flash),NOR flash通過USB下載線下載到NAND flash。
? 注:Nand flash相當硬盤
? 系統安裝步驟:
? (1)一切連接就緒后(開發板串口與PC機、開發板USB與PC機等)打開軟件SecureCRT并連接好出現如下界面
? ? (2)系統要安裝到Nand flash,首先要格式化一下:
? ? (3)然后安裝BootLoader
? ? 把文件下載到內存當中,然后安裝服務程序會自動到內存中取這個文件,然后燒錄到Nand Flash中
? ? (4)安裝Linux內核
?
?? (5)下載文件系統
? ? 下載完成
5 如果找不到arm-linux-gcc安裝路徑可以修改bash環境路徑
dongry@d-linux:~$vim /root/.bashrc //只是一個例子,安裝路徑可能不同 dongry@d-linux:~$vim /root/.bashrc //創建路徑 dongry@d-linux:~$source /root/.bashrc //讓路徑生效6 交叉編譯鏈工具實例
?
/*********************************** 假如在led文件中有led.lds led.S Makefiles三個文件 **************************************/ dongry@d-linux:~$ cd leddongry@d-linux:~/led$ ls led.lds led.S Makefiledongry@d-linux:~/led$ arm-linux-gcc -g -c led.S //讓led.S生成一個編譯文件.o dongry@d-linux:~/led$ ls led.lds led.o led.S Makefiledongry@d-linux:~/led$ arm-linux-ld -Tled.lds -o led.elf led.o //讓led.o生成一個.elf文件 dongry@d-linux:~/led$ ls led.elf led.lds led.o led.S Makefiledongry@d-linux:~/led$ arm-linux-objcopy -O binary led.elf led.bin //生成一個.bin的二進制文件 dongry@d-linux:~/led$ ls led.elf led.lds led.o led.S led.bin Makefiledongry@d-linux:~/led$ make clean //刪除剛才編譯的各種文件 dongry@d-linux:~/led$ ls led.lds led.S Makefiledongry@d-linux:~/led$ make led.elf led.lds led.o led.S led.bin Makefile?7 下載二進制文件到裸機
dongry@d-linux:~$ ./dnw ./led.bin 30008000 //按回車//出現:addr=30008000File name:./led.binFile size: 252 bytesStart Seeding data...Seet 100% 262 bytes 10k?8 鏈接器腳本
? 鏈接器腳本組成:段、起始鏈接地址、對齊、變量、代碼段首文件
??https://www.cnblogs.com/li-hao/p/4107964.html
8.1 鏈接器腳本的創建
? (1)創建段信息(包括代碼段、數據段、bss段)
SECTION {.text : //創建代碼段 {*(.text)}.data : //創建數據段 {*(.data)}.bss : //創建bss段 {*(.bss) } }? (2)設置起始鏈接地址
SECTION {. =0x00000000; //設置起始鏈接地址.text : {*(.text)}.data : {*(.data)}.bss : {*(.bss) } }? (3)對齊
SECTION {. =0x00000000; . =ALION(4); //四字節對齊 .text : {*(.text)}. =ALION(4); //四字節對齊 .data : {*(.data)}. =ALION(4); //四字節對齊 .bss : {*(.bss) } }? (4)變量
SECTION {. =0x00000000; . =ALION(4); .text : {*(.text)}. =ALION(4); .data : {*(.data)}. =ALION(4); bss_start = . ; //變量 .bss : {*(.bss) }bss_end = . ; //變量 }? (5)代碼段首文件
SECTION {. =0x00000000; . =ALION(4); .text : {start.o(.text) //代碼段首文件*(.text)}. =ALION(4); .data : {*(.data)}. =ALION(4); bss_start = . ; .bss : {*(.bss) }bss_end = . ; }8.2 運行鏈接器腳本
arm-linux-ld -Tled.lds start.o main.o -o led.elf //生成.elf文件 arm-linux-objcopy -O binary -S led.elf led.bin //生成二進制文件 arm-linux-objdump -D -S led.elf > dump //反匯編?
轉載于:https://www.cnblogs.com/dongry/p/10395719.html
總結
- 上一篇: 《程序员修炼之道:从小工到专家》阅读笔记
- 下一篇: C#穿透session隔离———Wind