嵌入式学习过程遇到的一些问题总结

1.在电脑“运行”中输入“ipconfig /all”查询ip地址为什么会不一样?
答;一个是内网IP,一个是外网的IP。
你输入的ipconfig /all,最后就是外网的IP地址。
如果你是用的是动态IP,比如ADSL,就是动态交换的IP地址,拔一次号一个IP。静态IP地址现在不多了。资源不够了。

2.用cuteftp或别的ftp工具连接linux时被拒绝怎么回事啊?

3.关于NOR flash和NAND flash的问题???U盘中用的flash是什么类型的,是NOR flash还是NAND flash? 看了一些关于NOR flash和NAND flash的对比,
NAND flash有很多优势,比如大容量、读写擦除快等,那NOR flash还有市场吗?
答案:U盘的是NAND .因为nand flash存储比较大,写入速度和清除速度都比nor快,所以经常用在U盘和智能手机中充当硬盘的角色(eMMC),
内存就是DRAM了。
nor flash的优势是读的速度非常快,而且非易失,所以常用来像手机开机工作,跟PC的CMOS一样(可以存储关键程序代码),怎么说呢,nor的优
势和劣势一样明显,优势是读取速度,少量储存能力使它跟RAM一样,用在一些嵌入领域比如汽车控制这些不需要大容量储存的电子产品还是很有前途的哈。
未来应该是NAND的天下。

4.NOR与NAND的区别
NOR的读速度比NAND稍快一些。
● NAND的写入速度比NOR快很多。
● NAND的擦除速度远比NOR快。
● NAND的擦除单元更小,相应的擦除电路更加简单。
● NAND的实际应用方式要比NOR复杂的多。
● NOR可以直接使用,并在上面直接运行代码,而NAND需要I/O接口,因此使用时需要驱动。

5.新手学习ARM,对片内ram、SDRAM、NOR FLASH和NAND FLASH启动这几个概念不理解,还有uboot不懂,求大虾指点???
答案:
1.片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行。片内ram装载的是norflash中的内容搜索,即u-boot。
2.uboot放在norflash里,nandflash就存放的操作系统。所以norflash相当于电脑的bios,nanflash才是硬盘。sdram就是内存了
3.uboot是一级启动代码,即bootloader,用来加载操作系统(nandflash)到sdram并且执行,当然uboot还能格式化nandflash和安装新系统的功能。

6.新手啊,刚买的板子,刚又遇到一堆问题,还没解决。再问下哈,我想知道的细一点,就比如说,现在一个ARM板子,我还没有启动电源,那么这
个片内ram,和sdram肯定是没有东西的,那么这个时候,nor flash 和 nand flash里面有个啥呢?还有,我现在启动板子之后,又有啥跑到片内ram里,有啥跑到sdram中呢???
答案:nor flash 和 nand flash里面肯定有程序啊!!ARM启动后,有个自动的逻辑先从norflash开始执行程序(就像51单片机复位后PC=0000H,从这里开始执行程序),
norflash是允许

片内执行程序的,这个特性你需要了解。执行程序时,就把部分代码复制到内部sram,再跳转到sram执行完成sdram初始化,再将nandflash中的系统复
制到sdram并运行,这样就启动了。
搜索具体的启动过程,你可以在网上搜索到的。


7.什么是内存???????????????(RAM ROM SDRAM等)
答案:在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才
能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存,港台称之为记忆体)
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速率快。内存是电脑中的主要部件,它是相对于外存而言的。
我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,
才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而
我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影
响电脑的运行速度。
内存就是暂时存储程序以及数据的地方,比如当我们在使用WPS处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你选择存盘时,内存中的数据才会
被存入硬(磁)盘。在进一步理解它之前,还应认识一下它的物理概念


8.嵌入式Linux为什么要从Nor Flash启动?
答案;首先Linux内核是无法无直接启动的,一定要使用BootLoader进行引导,BootLoader从Nor启动是为了方便,CPU上电后从0地址运行,NorFlash可以像Ram一样进行数据读取,
一般会把NorFlash接
程序可以在Nor flash中运行,但是不可以在nand flash中运行。所以要是使用nand flash的话,一般是将开始的一段代码有硬件复制到ram中,然后从ram中执行。但是这种
嵌入式处理器现在也很常见了,比如三星的2440、6410等等处理器
到CPU的0地址那里,这样上面上电后,就可以直接运行BootLoader了,BootLoader启动了以后,就可以把启动Linux内核。


9.闪存(nand flash等)和内存(sdram)区别?
答案:闪存就相当于硬盘 像u盘 tf卡 等等都使用闪存芯片 可以储存数据
内存比闪存效率高很多 但断电后数据会消失 一般使用在pc上

10.存储器和寄存器的区别???
答案:一般意义上理

解,寄存器是CPU里的存储单元,与CPU离得近,所以CPU在运算时通常都会用寄存器当中转站。存储器是在CPU外部的存储器,分为RAM,ROM。
对单片机来说,因为存储器,CPU都在一个片内,所以寄存器是片内RAM的一部分。
存储器在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右。
内存和寄存器就是为了解决存储器读写速度慢而产生的多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存的主要存储介质,但从20世纪70年代开始,
逐步被半导体存储器所取代,目前的计算机都是用半导体存储器。现在的DDR2内存的读写速度一般为6~8GB/S,跟机器性能也有关系。
而寄存器(又称缓存)一般是指由基本的RS触发器结构衍生出来的D触发,就是一些与非门构成的结构,一般整合在CPU内,其读写速度跟CPU的运行速度基本
匹配,但因为性能优越,所以造价昂贵,一般好的CPU也就只有几MB的2级缓存,1级缓存更小。使用寄存器可以缩短至零长度、节省存储空间,提高指令的执行速
度。不同的寄存器有不同的作用,如:通用寄存器(GR)用以存放操作数、操作数的地址或中间结果;指令寄存器(IR)用以存放当前正在执行的指令,以便在指
令执行的过程中,控制完成一条指令的全部功能。
CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。最理想的情况就是CPU所有的数据都能从寄存器里读到,这样读写速
度就快,如果寄存器里没有要用的数据,就要从内存甚至硬盘里面读,那样读写数据占的时间就比CPU运算的时间还多的多。所以评价一款CPU的性能除了频率,缓
存也是很重要的指标。
存储器是用来永久存放数据的设备,应该很好理解。硬盘、u盘都是存储器
寄存器是汇编语言里放计算数据用的临时单元地址。
比如有两个寄存器a和b, a里放了2,b里放了3
那么可以用汇编指令把a和b相加,并把计算结果放到c里
所以寄存器是内存范畴的
寄存器是存储器中的一类。
存储器的概念比寄存器广泛,计算机中用于存储程序和数据的器件都可以称为存储器。
寄存器是位于CPU内部的存储器件,数量很少,但是数据读写速度很快。
寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。
存储器插在主板上,容量大,速度慢;寄存器位于cpu内部,是cpu运算时取数据的地方,所有数据必须从存储器传入寄存器后,cpu才能使用。寄存器

容量非常小,
但cpu使用寄存器中的数据几乎没有任何延迟,速度非常快

11.汇编语言里的LDR和STR???
LDR:从内存中读取数据放入寄存器中 LDR r0,=0x56000000 ,LDR r0,[r1]和mov r0,#0x0ff的区别:=0x56000000和[r1]表示内存(类似指针),而#0x0ff表示立即数
STR:将寄存器中的数据存到内存中
STR r1,[r0]表示将寄存器r1中的数据存入由寄存器r0指向的内存中

12.linux中用apt-get update更新软件源或用用apt-get install安装软件时,若出现无法下载时,可能是软件源(/etc/apt/sources.list)的问题,解决方法是修改此文件

13.关于手机ROM和RAM的问题???
答案:所有的计算机类型的东西都有ROM+RAM的概念,打个比方:如果把你的电脑看成一个简单的整体,硬盘就是ROM,内存就是RAM。程序和数据平时都存放在硬盘里,运行的
时候会先调用到里并计算。ROM的大小影响到你的手机能安装多少个程序,RAM的大小影响到你能同时运行多少个程序。不知道讲到这里你有没有概念。
即使是诺记的塞班系统,也是有ROM+RAM的概念的,但是长久以来,他的ROM和RAM小的可怜,没必要说罢了。
还要解释下ROM和储存卡(这里跟RAM没有关系)的区别。表面的区别是ROM一般都说成是手机自带的程序存储空间,而储存卡是扩展的,在有些系统里,他们两个功能差不了多少,
但有的时候程序要存储在ROM里才更稳定,毕竟储存卡是活动的么


14.编译模块时,在makefile里的$(MAKE) -C $(KERNELDIR) M=$(PWD) modules 这句话的意思???
答案:在FL2440资料的LED驱动编程的编译makefile里面看到这样一句话,-C是表示进入$(KERNELDIR)目录执行makefile,而M不是makefile的选项,
是内核根目录下的Makefile中使用的变量。
# Use make M=dir to specify directory of external module to build
# Old syntax make ... SUBDIRS=$PWD is still supported
# Setting the environment variable KBUILD_EXTMOD take precedence
ifdef SUBDIRS
KBUILD_EXTMOD ?= $(SUBDIRS)
endif
ifdef M //如果没有定义或赋值M,此处M未定义(undefined)
ifeq ("$(origin M)", "command line") //如果定义了,此句用来判断M是否从命令行来
KBUILD_EXTMOD := $(M)
endif
endif


15.加载模块时出现这个错误insmod: error inserting './hello.ko': -1 Operation not permitted的解决方法???
答案:要加sudo,因为这是在往内核插入模块

16.加载模块时出现这个错误insmod: error inserting 'i8k.ko': -1 Invalid module format的解决方法???
答案:编译时用的hello.ko的kenerl 不是 我的pc的kenerl版本。我只要以pc机(虚拟机)的内核为基准,在makefile 那改变内核路径就可以了,可以顺利地编译了!

17。有时卸载模块时会出现错误提示:Device or resource busy ?
答案;要卸载一个模

块,首先用lsmod看看该模块是否确实已经加载上来,然后再做操作。除此之外,在碰到有依赖关系的模块时,从内核中卸载模块的过程与载入的过程恰好相反,
它遵循“first in last out“的准则,即在一系列有依赖关系的模块中,必须先卸载最后加载进来的模块,最后卸载最先加载进来的模块。比如:如果要用 rmmod 移除正在使用中
的模块(如上例,要卸载slhc, 但仍有PPP模块在使用它)会出现错误提示:Device or resource busy 。所以,在将PPP模块从内存中卸载后,才可能将slhc模块从内存中卸载。

18.出现错误
yacc -d grammar.y
make: yacc:命令未找到
make: *** [grammar.c] 错误 127
需要安装yacc
inux下是用flex和bison来分别代替lex和yacc的,安装直接使用命令:
sudo apt-get install bison

19.电脑没有串口和并口可以用oflash,jlink,和nor flash上的uboot下载程序
用oflash得有openjtag,而openjtag会有配套的线的
我的只用jlink和两根数据线
那就不能用openjtag了
只能用jlink和nor flash上的uboot了

20.jlink只能下载到Nor Flash上,但资料里的bin文件只能下载到nand里,除了uboot.bin少数几个外。资料里的程序可以只可以下载到Nand Flash(由于某种原因),
但可以自己编写程序使用jlink下载)

21.用jlink下载uboot.bin到Nor Flash上,重新以Nor Flash启动,进入uboot的菜单,就可以用n(download uboot to nand flash)下
载bin文件(其他选项可以下载别的bin文件)(download uboot to nand flash里的uboot只是为了看着方便)到Nand Flash里的0地址了(可以用dnw和tftp几种方式下载),
把开发板断电,设为Nand Flash启动,就可以观察效果了(每次重启开发板时要先设成nor flash,下载好程序到nand flash后,再以nand flash方式启动)
如果不是调试uboot,使用jlink的次数会很少,只需要烧写一次uboot——当它启动后,就可以利用串口或网络下载程序,然后烧写单板。
22.可以把uboot下载到nand里 以后就以nand方式启动uboot并下载别的程序吗???
答案:可以

23.下载程序三种方法:dnw, 网络下载(tftp,nfs), linux下的dnw

24.我倒不建议从单片机学起
因为你完全可以把ARM板当作单片机
这是我以前回答别人的话:
STM32和ARM9从软件的学习角度来说是2个概念,它们并不是特别的相辅相成。
STM32用于取代原来的51、PIC等单片机,在软件方面它的重点在于各种硬件模块的使用,就是裸板;
ARM9一般就要上操作系统了,这又分为上层应用和底层,你可以认为上层应用跟PC差不多;至于底层,你可以认为=软件框架+硬件模块操作。
所以学好STM32,在进行有操作系统的软件开发时,只是对里面的硬件模块操作有帮助。
实际上,一旦上了操作

系统,难点就在软件框架上了,各种概念跟单片机完全不一样:bootloader、内核、文件系统、库、休眠唤醒、调度、...

所以我觉得问题应该这样提:我想学ARM,侧重于单片机呢还是上操作系统?这2个方向大不相同。况且,你说的ARM9就是我说的上操作系统的情况,
是完全可以在ARM9的单板上进行单片机开发的。
我的学习过程就是用ARM9单板来当作单片机学习,就是写裸板程序;然后再到UBOOT──你可以认为它是一个比较大的裸板。
1.先把开发板当作单片机来用,这可以让你熟悉LINUX环境编程、熟悉ARM板的硬件操作
就是写各种裸板程序
2.接着学习UBOOT,你可以认为UBOOT就是各种裸板程序的集合
3.接着移植LINUX,这稍做一下就可以了,不用深究,知道怎么配置、编译就可以
4.文件系统:这是要弄懂的,这让你对LINUX启动后的流程有所了解
5.驱动程序:这才是重点
6. 最后是整个项目的经验,涉及硬件选型、应用程序、驱动程序
6. 最后是整个项目的经验,看第3期视频。

25.韦老师都说过好多次了
1.如果windows有多网卡,那么这些网卡的IP的网段一定不能相同
2.vmware用桥接的话,把windows网络连接里的vmnet1,vmnet8禁止掉
3.请确定你选用哪一个网卡来连接开发板
4.VMWAER里,选择步骤3所选的网卡用作桥接。方法如下:
vmware的Edit菜单->Virtual Network Editor->Host Virtual Network Mapping->VMnet0, 在此选择网卡。
不要选择Bridge to an automatically chosen adapter, 一定要选中某个网卡
5.步骤3选择的网卡、VMWARE LINUX的IP、开发板IP,三者设为同一网段
6. 在windows里,你选用的网卡"如果是断开状态"的话,是无法PING通的
6.1 如果开发板正在运行UBOOT,它是在使用网络命令的时候才使能网卡,
其他时候是不使能网卡的。这意味着在UBOOT阶段没有使用网络命令时,即

bootargs=console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.12:/home/wangbo/nfs/fs_1th ip=192.168.1.100:192.168.1.12:192.168.1.12:255.255.255.0:
https://www.360docs.net/doc/28771302.html,:eth0:off
使你已经接了网线,但是windows的网卡仍然是断开状态。要想解决这个问题,
建议使用一个HUB或路由器,让PC、开发板的网线都接到HUB或路由器上去。
UBOOT是不回应PING包的,这意味着开发板运行UBOOT时,它可以PING通别
人,但是别人PING不通开发板。
6.2 开发板的Linux已经启动后,它会一直使能网卡。即使没有用HUB或路由器,
只要你满足了1~5步骤,肯定是可以PING通的。




26.设置主机ip 196.168.1.1 虚拟机:196.168.1.3 目标板:196.168.1.2,使三者处于同一网段(可用ifconfig ethx ip来设置)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!别忘了连接网线
虚拟机的设置选项中network adapter选择NAT,vmnet8设置成NAT时,vmnet7设置成host only,vmnet0 briged to为automatic,可以上网(和pc机共用一个网络),此时windows虚拟出来的网段(用ipconfig查看vmnet8的ip)和NAT模式虚拟网卡的网段是一样的,
都为192.168.110.X,在安装VMware之后同样会生成一个虚拟DHCP服务器,为NAT服务器分配IP地址。当主机和虚拟机进行通信的时候就会调用VMware Network Adepter VMnet8虚拟网卡,因为他们都在
一个网段,所以通信就不成问题了

虚拟机的设置选项中network adapter选择bridged,并且EDIT--virtual network editor里
的vmnet0 的briged to设置成pc机上的物理网卡(pc机的本地连接的网卡:realtek pcie GBE family controller)(不为automatic)时,vmnet7设置成microsoft virtual wifi miniport adapter
可以和主机、开发板ping通

虚拟机的设置选项中network adapter选择bridged,并且EDIT--virtual network editor里
的vmnet0 briged to为automatic时,vmnet7设置成host only,vmnet8设置成NAT,可以上无线网络

通过物理网卡(网线)ping通了才可以挂接mount文件系统了(mount -t nfs -o nolock,vers=2 196.168.1.3:/nfsroot /mnt)
nfs服务器配置的共享目录里的目录是什么就挂接哪个目录(此处为/home/work)



27.set bootargs noinitrd root=/dev/nfs nfsroot=196.168.1.3:/nfsroot ip=196.168.1.2:196.168.1.3:196.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

set bootargs noinitrd root=/dev/nfs nfsroot=196.168.1.3:/nfsroot ip=196.168.1.2:196.168.1.3:196.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200


28.用nfs文件系统启动开发板步骤:
a。在根目录下创建共享目录nfsroot(不一定是根目录)
b。将busybox生成的目录(bin,dev,etc)放到nfsroot目录下。
c。配置nfs服务器,在/etc/exports目录里配置共享目录:/nfsroot *(rw,sync,no_subtree_check),配置完成后,重启nfs-server服务:sudo /etc/init.d/nfs-kernel-server restart
d。在uboot命令行里reset参数rootargs:noinitrd root=/dev/nfs nfsroot=196.168.1.3:/nfsroot ip=196.168.1.2:196.168.1.3:196.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
e。直接启动就行了:boot

若出现kernel panic或nfs: server 196.168.1.3 not responding, still trying这种问题,可将nfs目录里的/etc/init.d/rcS里的ifconfig ethx xx注释掉就行了。

用nfs文件系统启动开发板步骤和在操作系统里用mount -t nfs -o nolock,vers=2 196.168.1.3:/nfsroot /mnt挂接nfs操作不一样。

六。linux 怎么样复制文件夹内所有文件到另一个文件夹?
cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所

有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/

29.2440开发板linux下运行hello world程序,出现illegal instruction???
答案:若想编译在目标板上运行的程序使用光盘里的tools里的交叉编译器arm-linux-gcc-3.4.5-glibc-2.3.6.tar,将其解压后放到目录/usr/local/arm-linux里,把其安装路
径/usr/local/arm-linux/gcc-3.4.5-glibc-2.3.6/bin/
放到环境变量里/etc/environment(也可放在~/.bashrc,详情可见问题九),务必要重启系统,设置才能生效。
否则用ubuntu安装的新版本的交叉编译器/home/akaedu/linux-cross-tool/4.3.2/bin

30.2440开发板linux下运行hello world程序,出现./hello not found???

31.Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的环境变量。
所以管理环境变量的文件也分为系统级和用户级的,下面贴一个网上找到的讲的比较明白的文件介绍(略作修改)[1]:

1.系统级:
(1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户。该文件一般是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件。
(2)/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

2.用户级(这些文件处于家目录下):
(1)~/.profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里
是推荐放置个人设置的地方
(2)~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,
效率肯定有影响。
~/.bash_profile or ~./bash_login:这里没有引用作者的,下面会提到
~/.pam_environment:用户级的环境变量设置文件,没有做测试,不知道管不管用。

通过上面的文件介绍,就能明白我们需要设置环境变量的时候,需要修改什么文件,要想对所有的用户生效,那就需要设置系统级的环境变量。反之,需要修改用户级的文件(最好
是修改.profile文件,理由上面已经讲了)。

32.# insmod second_drv.ko
second_drv: version magic '2.6.22.6 mod_unload ARMv5 ' should be '2.6.22.6 mod_unload ARMv4 '
insmod: cannot insert 'second_drv.ko': Invalid module format (-1): Exec format error 这是啥错误啊??????
答案:修改内核的ARCH--ARM--Makefile 将armv5t改成ARMv4 ,重新编译内核就OK了(好像这样也不行

,不过也是一种方法,可以试试)。
最好的办法是编译模块用的的内核和编译器和编译uImage的内核和编译器用同一套就行了。
33.insmod---cat /proc/devices 查看主设备号m---从测试程序查看设备名称(xxx),mknod /dev/xxx c m 0---./应用程序
34.创建设备节点:1,用十一的方法手动创建 2,用busybox的mdev机制自动创建。详见应用开发完全手册十七章
busybox的mdev机制自动创建可以不用每次都cat /proc/devices查看设备号。

35.编译内核时出现mkimage" command not found - U-Boot images will not be buil ,怎么解决???
答案;
如果使用make uImage 则能生成由uboot 引导的内核文件, 需要用到
uboot/tools/mkimage,可以在/etc/bashrc 文件末加入一下语句:
export PATH:=$PATH:/usr/src/arm/u-boot-1.1.5/tools
这样就能直接引用mkimage 命令。

前提是uboot/tools目录下有mkimage这个工具,需要编译才能生成:

修改Makefile
找到
ifeq($(ARCH),arm)
CROSS_COMPILE =
改成
ifeq($(ARCH),arm)
CROSS_COMPILE = arm-softfloat-linux-gnu-
(CROSS_COMPILE = #arm-none-linux-gnueabi- 经测试也可以)
make distclean
make at91sam9260ek_config
make
生成的工具在uboot的tools里面,把这个mkimage考到/usr/bin下就行了:
#cp mkimage /usr/bin/mkimage

如果使用的是Ubuntu 9.10可以使用下面的命令安装mkimage:
#apt-get install uboot-mkimage
简单来说 就是把uboot/tools目录下有mkimage这个工具考到/usr/bin下就行了

36.No filesystem could mount root, tried: ext3 ext2 cramfs msdos vfat romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)??????????
答案:重新配置内核,在配置界面选择yaffs,支持yaffs文件系统

37.制作文件系统时用的是工具链A,那么也应该用工具链A来编译程序

38.返回上一层目录: " cd .. "
返回前一个目录: " cd - "

39. 在ubuntu下找不到arm-linux-gcc命令还有一种解决办法就是在Makefile里指定交叉编译器的路径
01.export PATH=$PATH:/usr/local/arm/2.95.3/bin
02.
03.是设置当前用户的PATH,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有/usr/local/arm/2.95.3/bin





相关文档
最新文档