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. PHP中多维数组var_dump展示不全

    转载于http://blog.csdn.net/Merlin_feng/article/details/51733354

  2. cf954H

    挖我自闭了这是什么东西啊. 给出一棵深度为  的树,其中深度为  的节点有  个儿子.问树上的简单路径中长度在  之间的每个有多少条.  表示对于在  层的  个节点,向下走  步的方案数  表示对于 ...

  3. Dalvik虚拟机执行流程图

  4. Realm 简介

    是一个跨平台的本地数据库,比sqlite 数据库更轻量级,执行效率更高. 官网地址:https://realm.io/docs/java/latest/

  5. express.js graphql express-graphql

    文档 创建应用 const l = console.log; var express = require("express"); var graphqlHTTP = require ...

  6. vue中使用html2canvas及解决html2canvas截屏图片模糊问题

    最近在项目中用到了html2canvas插件,遇到的一些坑写下来,与大家共勉. html2canvas  官方网站http://html2canvas.hertzen.com/index.html 这 ...

  7. git最佳实践之feature和hotfix分支

    先来复习一波,git的最佳分支管理流程: 再简单复习各个分支: master: 主分支,主要用来版本发布. develop:日常开发分支,该分支正常保存了开发的最新代码. feature:具体的功能开 ...

  8. eclipse中的快捷键的使用

  9. Android adb调试

    1.首先是adb 修改 devices/amlogic/p201_iptv/system.prop service.adb.tcp.port=5555 或者直接在盒子串口下修改 system/buil ...

  10. python语法_使用占位符进行格式化输出

    “%s”   占位符 name = input("name:") age = input("age:") job = input("job:" ...