我要在ARM LINUX下,编写一个脚本,让它随着系统的启动也自启动起来,应该如何弄

我要在ARM LINUX下,编写一个脚本,让它随着系统的启动也自启动起来,应该如何弄,第1张

按这个办法试试

按一般的方法,写一脚本放在/etc/initd中,然后在/etc/rcxd中建立软连接,为了省事我们直接用:

update-rcd scriptname defaults

这个命令来做,如果有误撤消这次 *** 作,

update-rcd -f scriptname remove

另一种如果方法也是将角本放入/etc/initd/,然后用rcconf进行选择,不过别忘了要先chmod a+x scriptname来更改权限。

1 GECMlO开发板硬件构成

ARM处理器是一种支持16/32位双指令集的高性能、低成本、低功耗的R ISC微处理器,目前已经占领了75%以I:的32位RISC嵌入式产品f仃场。本文所选用的ARM920T微处理器属于中端产品,应用也十分广泛。$3C2410是32位低功耗RISC宏单元,其工作频率为203 MHz,同时支持Thumbl6位精。简指令集,从而能以较小的存储空间需求,获得32位的系统性能。64M字节的SDRAM,由两片K4S561632组成,工作在32位模式下;64M字节NAND Flash,采用的是K9F1208,可以兼容16M,32M或128M字节;10M以太网接口,采用的是CS8900Q3,带传输和连接指示灯;2路UART串行口,波特率可高达115200bps,并具有RS232电乎转换电路Embedded·ICE(20脚标准JTAG)接口和并口式jTAG接口,支持ADS,SDT软件的卜载和调试以及FLASH的烧写。

2 嵌入式Linux开发环境的搭建及开发工具的使用

21宿主机——目标机模式

进行项目开发前,先要做的是搭建一套基于Linux *** 作系统的应用开发环境,一般由目标板(GEC2410开发板)和宿主机(LiUUX虚拟机)所构成。如图1所示。嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚拿是不可能的目前一般采用的解决办法是首先在通用计算机上编写程序,然后通过交叉编译生成目标平台七可以运行的二进制代码格式,最后再下载到目标平台上的特定位置卜运行用来编译这种程序的编译器就叫交叉编译器。为了不跟本地编译器混淆,交叉编泽器的名字一般都有前缀。例如:arm1inux—gcc。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式。

22 Linux服务器交叉编译环境的建立

Linux服务器是嵌入式Linux内核编译、应用程序开发、编译等的公共平台,在一个嵌入式系统的开发过程中,有许多工作需要通过它来完成。交叉编译工具用于编译在目标系统上运行的嵌入式Linux内核及应用程序,包括编译器、连接器、调试器以及代码转换J二具等实用程序,一般以瓜缩软件包的方式提供给我们,称为开发工具链(Toolchain)目前基于ARM架构的交叉编泽工具链为:allll-liuuxgcc-2953。

1)GNU交叉工具链的下载

从ARM官方网站F载删armtinuxorgak,可以从该站点下载2953工具链:

ftp://tiparmIinuxorguk/pub/armlinux/toolehain/cross-2953tarbz2

2)cross-2953tarbz2包的安装步骤

a#mkdir/mr/local/arm;

b#cp CROSS一2953tarbz2/usr/local/ann;

C#tar jxvf crog$一2953tarbz2;

d添加环境变量:在文{牛/ete/bashrc文件最后添加:

export PATH=/usr/local/arm/2953/bin:$PATH:

e工具链安装完成。

23配置NFS服务的步骤

NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上。并且作为其他计算机的一个目录,其目的就是让不同的机器、不同的 *** 作系统之间可以彼此共享文件。

NFS的使用分服务器端和客户端,其中服务器端提供要共享的文件,客户端通过挂载“mount”这一动作实现对共享文件的访问 *** 作。下面主要介绍GEC24 10开发板的Linux系统与虚拟机的LintLx通过NFS实现文件共享的方法与步骤:

1)在虚拟机linux配置nfs服务,编辑nfs配置文件/etdexports,设置共享目录如:vi/etc/exports,添加:/root/nfs—share·(rw,sync,no—root—squash)。rW表示允许下位机读写该目录,no_root_squash允许下位机以主机root用户身份挂载根文件系统。

2)在虚拟机linux启动NFS服务:(修改配置文件后就需要蕈新启动施服务)#/etc/initd/nfs reSTart或者用命令:#service nfs restarto

3)防火墙的关闭。选择系统设置一》安全级别,将安全级别改为“无防火墙”。

4)用交叉网线连接PC机(虚拟机)与开发板,目的让两个linux处在同一个网络内。

开发板的ip地址是:1921682223,因此配置虚拟机ip为1921682开头的ip地址,如可用下列命令配置:#ifcONfigethO 192168223。

5)在开发板linux系统中挂载虚拟机linux的NFS共享目录,执行下列命令:#mkdir/tmp/nfs#mount—t nfs一0 nolock192168223:/root/nfs—share/trap/nfs。

24交叉调试器的制作

241交叉调试器的结构

程序的调试足检杏程序正确性、可靠性、稳定性的重要手段,也是应用程序开发必不可少的组成部分。嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。本地软件开发调试器与被调试的程序往往运行在同一台计算机}:。而嵌入式软件开发过程中,调试时采用的是在宿主机和目标机之间进行的交叉调试。调试器运行在宿主机,但被调试的进程却是运行在目标板。调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。

242制作交叉调试器的方法

1)解压源码包:tar zxf gdb一60targz

2)配置:cd gdb一60

mkdir buildarm1inux

cd buildarm1inux

/configure--target=arm·linux一一prefix=/usr/local/arm/2953/

3)编译:make

4)安装:make install

在/usr/locaL/arm/2953/bin/目录下生成alTfl-linuxgdb工具

5)编译生成针对f1Eln处理器的gdbserver

a进入sdb源代码包中的gdb$erver目录

cd sdb-60

cd gdb/gdbserver

b配置生成gdbserver

chmod U+X configure

CC=arnl—linux—gcc/configure一一host=arm-linux

cMake,生成gdbserver、gdbreplay

6)通过凼,将gdbserver/gdbreplay到目标板中

7)启动目标板上的gdbserversabserver 192168188:2345 cross-teat其中192168188是目标板的IP地址。2345是任意指定的端口,也可以是其他端口。

8)启动宿主机端arm1inux-gdb调试器在宿主机的工作目录中有对应的程序和源文件

#arm·hnux-柚CI‘OS8一teat

(gdb)target remote 192168188:2345

连接远程gdbserver

(sab)b main

设置断点

(Sdb)C运行

bootloader 在嵌入式产品里面起着至关重要的作用。

处理器架构通常会决定当处理器上电时从什么地址开始取指执行。

通常来说,设计的时候硬件工程师会将一块物理的ROM映射到这个

地址所在的地方,同时bootloader(至少是一部分)会被烧在这个

ROM里面。这样当上电的时候,程序就在ROM里面执行了,所执行

到的程序需要负责将bootloader的剩余部分搬到 RAM中去执行。

在ROM里面直接执行程序的能力,我们通常称之为XIP的能力,也就

是 Execute In Place。

现在具有XIP能力的不仅是ROM了,还有NOR Flash, 它也可以像 ROM

那样被映射到固定的地址去。现在有很多芯片,也支持 NAND 启动,

这时候就不是直接将 NAND 映射到特定地址中去了,因为 NAND的工作

方式和 NOR不一样,它不能直接挂在总线上,而是需要通过一个NAND

控制器才能正常工作。这时候处理器厂家会想办法在上电的时候,通过

某种办法自动的将保存在NAND里面的少部分程序拷贝到内部的SRAM中

去。SRAM也是具有XIP能力的,它在这种NAND启动方式中会被映射到

处理器上电时所需要寻址的特定地址处。所拷贝的那小块程序需要负责

将bootloader的其他部分拷贝到RAM中去执行。

虽然,ROM/NOR/SRAM 等都是有XIP能力的,但是相对于在RAM中执行

程序,速度都是比较慢的,这就是为什么总是需要拷贝 bootloader 的剩

余部分到 RAM 中去执行的原因。

顺便说下,Bootloader 和 BIOS在所扮演的角色上类似,但是他们两个有

一个关键的地方不一样:BIOS在OS启动后还会驻留在内存中,负责基本

的输入输出功能,但是Bootloader 却不一样,在将控制传递给 *** 作系统

之后,bootloader 即告消亡,不会再留在内存中。

/////////////////////////////////////////////////////////////////////////////////////////////////////////

杭州巨立安(JulianTec)是杭州市场上

唯一由资深研发工程师所创办的机构。所以:

就专业程度和实在程度而言,杭州巨立安(JulianTec)

是您在arm架构下学习嵌入式Linux研发的上佳指导!

巨立安这边的好处在于小班手把手的指导,

如此能更好的把握学习效果。

Arm linux 内核启动流程 还是从编译链接生成vmlinux的过程来看吧,由一大堆o文件链接而成,第一个就是 kernel\arch\arm\kernel\head-armvo

一般,这种板子都跑的是linux系统

在系统中有一个 /etc/initd/ 目录,他下面定义了开机启动的脚本,你可以去看下,仿照他写,写完之后要在 /etc/rcd 下面对你写的脚本创建一个软连接。

以上就是关于我要在ARM LINUX下,编写一个脚本,让它随着系统的启动也自启动起来,应该如何弄全部的内容,包括:我要在ARM LINUX下,编写一个脚本,让它随着系统的启动也自启动起来,应该如何弄、如何启动 arm 开始转换 a/d,有几种方式、嵌入式ARM处理器系统启动过程问题我知道我们的PC机启动过程是系统上电后先由BIOS运行并设置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10115812.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存