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 led dongry@d-linux:~/led$ ls
led.lds led.S Makefile dongry@d-linux:~/led$ arm-linux-gcc -g -c led.S //让led.S生成一个编译文件.o
dongry@d-linux:~/led$ ls
led.lds led.o led.S Makefile dongry@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 Makefile dongry@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 Makefile dongry@d-linux:~/led$ make clean //删除刚才编译的各种文件
dongry@d-linux:~/led$ ls
led.lds led.S Makefile dongry@d-linux:~/led$ make
led.elf led.lds led.o led.S led.bin Makefile

7 下载二进制文件到裸机

dongry@d-linux:~$ ./dnw ./led.bin   //按回车

//出现:
addr=
File name:./led.bin
File size: bytes
Start Seeding data...
Seet % 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(); //四字节对齐
.text :
{
*(.text)
} . =ALION(); //四字节对齐
.data :
{
*(.data)
} . =ALION(); //四字节对齐
.bss :
{
*(.bss)
}
}

(4)变量

SECTION
{
. =0x00000000;
. =ALION();
.text :
{
*(.text)
} . =ALION();
.data :
{
*(.data)
} . =ALION();
bss_start = . ; //变量
.bss :
{
*(.bss)
}
bss_end = . ; //变量
}

(5)代码段首文件

SECTION
{
. =0x00000000;
. =ALION();
.text :
{
start.o(.text) //代码段首文件
*(.text)
} . =ALION();
.data :
{
*(.data)
} . =ALION();
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 //反汇编

Linux系统组成的更多相关文章

  1. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  2. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  3. Linux系统中的Device Mapper学习

    在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...

  4. 玩转 Linux 系统的方法论

    Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...

  5. Linux 系统中发博客必备的五大图片处理神器

    发博客时,总免不了要用图片说话.经过长时间的磨合,在 Linux 桌面系统下有几款图片处理软件我已经用得比较顺手了.这几款软件在 Linux 世界使用广泛,各个 Linux 发行版的软件仓库中都有自带 ...

  6. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  7. 在linux系统中安装VSCode(Visual Studio Code)

    在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网  ...

  8. 如何重置硬盘遭到“损坏”的Linux系统root用户密码

    传统印象下Linux是非常坚不可摧的,具有千年不更新,万年不重启的美名.而随着虚拟化的推进,很多跑在虚拟化上的Linux由于先前基础架构的脆弱,变得适应性“越来越不好”,体现在IP存储如果出现节点故障 ...

  9. Linux 系统中的MySQL数据库默认区分大小写

    今天在开发中遇到这么个问题,将连接的数据库改为服务器上的时候(服务器是Linux系统的),程序跑起来后一直出错,总提示数据库的表找不到, 而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不 ...

  10. 如何配置Linux系统的网络IP地址

    一台安装了Linux系统的电脑如果想要联网,首先要做的就是进行网络配置.今天小编就以CentOS6.4系统为例为大家介绍整个网络配置的过程,虽然只是以CentOS6.4系统为例,但是其它的Linux系 ...

随机推荐

  1. 性能测试yslow

    YSlow YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化. YSlow可以分析任何网站,并为每一个规则产生一个整体报告,如果页面可以进行优化,则YSlow会 ...

  2. css 控制文字超出部分显示省略号

    该文章转自:http://www.daqianduan.com/6179.html 如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽 ...

  3. mui 轮播

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. Python学习之旅(二十五)

    Python基础知识(24):正则表达式 正则表达式:检查一个字符串是否与某个模式匹配 \d :匹配数字 \w :匹配字母或数字 . :匹配任意字符 {n} :匹配n个字符 {m,n} :匹配m到n个 ...

  5. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  6. 编译安装centos7 php7.2 mysql5.7 nginx1.9.9

    2018年3月12日 14:09:39 注意时效 centos7 网卡 cd /etc/sysconfig/network-scripts/ TYPE=Ethernet PROXY_METHOD=no ...

  7. centos7更改网卡名称

    1.编辑/etc/sysconfig/grub文件,加入net.ifnames=0 biosdevname=0 2.执行命令grub2-mkconfig -o /boot/grub2/grub.cfg ...

  8. SQL两张表筛选相同数据和不同数据

    原文链接:http://www.cnblogs.com/onesmail/p/6148979.html 方法一: select distinct A.ID from A where A.ID not ...

  9. time和datetime和tzinfo

    time和datetime模块还有tzinfo (时区)(一直不明白两者的区别,然后摘了两片文章(最后面的两个链接),很清晰...) 一.time模块 常用函数 1. time()函数 time()函 ...

  10. varnish缓存系统基础知识

    缓存系统类型 1.页面缓存/pageCache     缓存静态资源(html js css image)  例如:varnish    squid 2.数据缓存/dataCache      缓存应 ...