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 //反汇编