急~将linux移植到嵌入式系统ARM9上,启动代码和内核都编译好,并烧写到Flash了,怎么样让应用程序跑起来呢?谢谢

时间:2021-02-07 18:42:31
本人是初次接触linux,只要解决问题,可以单独发帖再加分给您!谢谢
---------------------------------
请问是不是还要做文件系统,如有了文件系统,那么应用程序必须放在文件系统的什么位置?谢谢。
还是另有好方法?请告诉具体操作步骤。谢谢

29 个解决方案

#1


肯定要有文件系统阿,一般用romfs,应用程序放在romfs/bin下
同时你的应用程序是要交叉编译过的

#2


应用程序是arm-linux-gcc交叉编译好的,假如是放在romfs/bin下,那么系统启动后,通过什么步骤进入到应用程序的main()函数里呢?

#3


既然一切齐备了,那就跟你在pc上运行应用程序没什么两样。

#4


yzx1983(捕风捉影)
-------------
初次做,PC上怎么跑应用程序我也不知道,请告诉一下。谢谢

#5


你直接用超级终端进去你的目标板阿,进去之后看到的就是开发主机上romfs下的目录了,
然后进入bin
比如你要执行一个helloword程序
cd /bin
hllowrod
这不就是和pc机上一样吗
不知道我说的是不是你想知道的

#6


那么要让这个helloworld程序在系统上电后自动运行,是不是要在哪个文件里写一行运行这个helloworld的代码呢?如果要的话,这行代码该怎么写?谢谢

#7


你的意思是在系统加载后 在etc下有init文件 加上你的应用程序就好了
要是在系统之前可能就是在bootloader改了

#8


把自己写的程序交叉编译arm-linux-,然后把二进制文件拷贝到文件系统里面。

#9


系统之后啊,
-----------
“在etc下有init文件 加上你的应用程序就好了”
--------
在init文件里什么位置加什么代码才能正常运行应用程序呢?(假定要运行的程序映象文件为hello)

#10


init.d/rc.d里的shell文件,具体文件名忘了,自己trace一下...

#11


好像是
/etc/rc.d/rc.local

跟dos的autoexec.bat有点类似。

#12


关键是调用程序的那行代码怎么写呢?谢谢

#13


就是
路径+文件名
例如你在/home/xxx/test/目录里的文件test.out需要执行,就加一行
/home/xxx/test/test/out

#14


打错了……
/home/xxx/test/test.out

#15


你的工作只是万里长城走了第一步,慢慢努力吧!
存储介质(一般是flash)要分为三个区
1.BootLoader
2.Kernel
3.RootDisk
三个部分都编译好以后,烧录到flash的固定地址位置,如果烧录位置没错,启动顺序是这样的,
先运行BootLoader,BootLoader从flash上加载内核,内核启动过程中加载RootDisk,如果一切ok,
系统就成功启动了。
然后用终端通过串口连接开发板,应该会连接到控制台,然后就和正常的Linux一样,如果要执行程序,那敲个命令就行了。

#16


可是我要的是上电复位后,应用程序自动跑啊,不是通过终端敲命令来运行

#17


/etc/init.d/rcS,把命令行加进去,就自动运行了,这个是启动脚本文件

#18


pyh(天天) ( ) 信誉:98 
------------
请问,在/etc下的inittab文件里加命令行(/tmp/hello.o)是否可行?谢谢

#19


pyh(天天) 说的可行

#20


pyh(天天) ( ) 
-----------
我的文件系统下/etc下没有init.d这个路径啊,我是使用已有的文件系统,如果我在烧写前,把这init.d目录间好,再写一个rcS脚本文件,行不行呢?谢谢

#21


不行

#22


pyh(天天) 
------
请问该怎么做呢?谢谢

#23


我在/etc/rc.d/rc.local脚本的最后加了行“/usr/my_tset.o”,复位后还是出现登录提示信息,程序没有直接运行。用root登录后,输入 ./usr/my_test.o程序能跑起来。请问不要登录提示该怎么做?谢谢

#24


/usr/my_tset.o
去确定这是可执行文件?

#25


你如何确认没有直接运行的?
linux总是需要登录的。

#26


个人的系统未必相同,你还是先确定启动脚本文件位置
/etc/inittab文件中,比如::sysinit:/etc/init.d/rcS一行就表示启动脚本文件为/etc/init.d/rcS,你看看你的脚本文件到底是那个,然后在脚本文件中加入命令行就可以了

#27


wzzww(无知者无畏)(我是你的) 
--------------
在命令提示符下输入:
/usr/my_tset.o  程序不会运行
./usr/my_tset.o  程序才会运行

#28


我知道什么问题了,在rc.d中需要的是绝对路径
我估计你的绝对路径应该是/root/usr/my_tset.o

#29


怎么屏蔽登录提示呢?只有屏蔽掉登录提示后,自动运行的程序 才有用的啊

#1


肯定要有文件系统阿,一般用romfs,应用程序放在romfs/bin下
同时你的应用程序是要交叉编译过的

#2


应用程序是arm-linux-gcc交叉编译好的,假如是放在romfs/bin下,那么系统启动后,通过什么步骤进入到应用程序的main()函数里呢?

#3


既然一切齐备了,那就跟你在pc上运行应用程序没什么两样。

#4


yzx1983(捕风捉影)
-------------
初次做,PC上怎么跑应用程序我也不知道,请告诉一下。谢谢

#5


你直接用超级终端进去你的目标板阿,进去之后看到的就是开发主机上romfs下的目录了,
然后进入bin
比如你要执行一个helloword程序
cd /bin
hllowrod
这不就是和pc机上一样吗
不知道我说的是不是你想知道的

#6


那么要让这个helloworld程序在系统上电后自动运行,是不是要在哪个文件里写一行运行这个helloworld的代码呢?如果要的话,这行代码该怎么写?谢谢

#7


你的意思是在系统加载后 在etc下有init文件 加上你的应用程序就好了
要是在系统之前可能就是在bootloader改了

#8


把自己写的程序交叉编译arm-linux-,然后把二进制文件拷贝到文件系统里面。

#9


系统之后啊,
-----------
“在etc下有init文件 加上你的应用程序就好了”
--------
在init文件里什么位置加什么代码才能正常运行应用程序呢?(假定要运行的程序映象文件为hello)

#10


init.d/rc.d里的shell文件,具体文件名忘了,自己trace一下...

#11


好像是
/etc/rc.d/rc.local

跟dos的autoexec.bat有点类似。

#12


关键是调用程序的那行代码怎么写呢?谢谢

#13


就是
路径+文件名
例如你在/home/xxx/test/目录里的文件test.out需要执行,就加一行
/home/xxx/test/test/out

#14


打错了……
/home/xxx/test/test.out

#15


你的工作只是万里长城走了第一步,慢慢努力吧!
存储介质(一般是flash)要分为三个区
1.BootLoader
2.Kernel
3.RootDisk
三个部分都编译好以后,烧录到flash的固定地址位置,如果烧录位置没错,启动顺序是这样的,
先运行BootLoader,BootLoader从flash上加载内核,内核启动过程中加载RootDisk,如果一切ok,
系统就成功启动了。
然后用终端通过串口连接开发板,应该会连接到控制台,然后就和正常的Linux一样,如果要执行程序,那敲个命令就行了。

#16


可是我要的是上电复位后,应用程序自动跑啊,不是通过终端敲命令来运行

#17


/etc/init.d/rcS,把命令行加进去,就自动运行了,这个是启动脚本文件

#18


pyh(天天) ( ) 信誉:98 
------------
请问,在/etc下的inittab文件里加命令行(/tmp/hello.o)是否可行?谢谢

#19


pyh(天天) 说的可行

#20


pyh(天天) ( ) 
-----------
我的文件系统下/etc下没有init.d这个路径啊,我是使用已有的文件系统,如果我在烧写前,把这init.d目录间好,再写一个rcS脚本文件,行不行呢?谢谢

#21


不行

#22


pyh(天天) 
------
请问该怎么做呢?谢谢

#23


我在/etc/rc.d/rc.local脚本的最后加了行“/usr/my_tset.o”,复位后还是出现登录提示信息,程序没有直接运行。用root登录后,输入 ./usr/my_test.o程序能跑起来。请问不要登录提示该怎么做?谢谢

#24


/usr/my_tset.o
去确定这是可执行文件?

#25


你如何确认没有直接运行的?
linux总是需要登录的。

#26


个人的系统未必相同,你还是先确定启动脚本文件位置
/etc/inittab文件中,比如::sysinit:/etc/init.d/rcS一行就表示启动脚本文件为/etc/init.d/rcS,你看看你的脚本文件到底是那个,然后在脚本文件中加入命令行就可以了

#27


wzzww(无知者无畏)(我是你的) 
--------------
在命令提示符下输入:
/usr/my_tset.o  程序不会运行
./usr/my_tset.o  程序才会运行

#28


我知道什么问题了,在rc.d中需要的是绝对路径
我估计你的绝对路径应该是/root/usr/my_tset.o

#29


怎么屏蔽登录提示呢?只有屏蔽掉登录提示后,自动运行的程序 才有用的啊