如果你想使用ram disk,那么用以下命令进行编译:make zimage.initrd否则用以下命令:make以前编译2.4内核的时候之前都要用make dep 命令保证编译内核时所有的依赖,例如头文件,都存在。不过对于2.6来讲已经不需要了,直接一个make命令把make dep和make zimage的事请就做了。如果你之前编译过,想重新编译的话,最好用一下make clean,它能够去除所有的object文件以及一些别的遗留文件。当然你也可以用make mrproper,这个比make clean清理得更加彻底,不过小心你的.config文件了,它会一起删除的,所以还是首先备份一下,或者就用make clean吧。现在我们是第一次编译,所以还不用考虑这些。为了保险,我们使用第二组指令来进行编译。时间蛮长的,如果一切顺利,编译出来的内核会放在 arch/ppc/boot/images/目录下,可能叫zimage.elf或者zimage.initrd.elf,用目前这种编译方式编译的是 zimage.elf。理论上讲,完毕之后就可以把这个执行文件拷贝到edk工程目录下,并进入创建ace文件的步骤了。但是,在上面的讲解中,我们并没有使用内核模块,而在进一步应用中,很可能有一些内核选项是要以模块形式编译进去的,此时,接下来的工作就是建立及安装模块,用命令make modulesmake modules_install来编译,成功后,系统会在/lib/modules目录下生成一个按你所编译内核的版本号命名的子目录,里面存放着新内核的所有可加载模块。将来要使用时用insmod命令进行加载即可。目前的的linux 2.6x版本内核是自动解决依赖关系,所以暂时不用关注depmod了。cf的配置cf卡分区其实不分区也可以,但是我们在这里分区的原因是最大限度模拟正常的linux,想想,一般的人安装linux系统的时候是怎么分区的?/根分区,swap分区以及/boot分区。ok,我们在这里也给我们的cf卡分三个区。暂时先以我这里的8g cf卡举例子。将cf卡插到系统上,使用命令mount | column -t看看cf卡对应的mount目录的dev名称是是什么。我计算机上的信息如图所示:screenshot-coloum@windstorm: ~.png可以看出,cf卡在我这里是/dev/sdc。然后我们使用fdisk将其分区:fdisk /dev/sdc具体的分区过程我就不讲了,如果你觉得不习惯fdisk的命令行操作形式,也可以使用gparted这个图形化分区工具,总之,最后要分成的效果是:1. partition 1 - type = fat16 (6) - size = 32mb (只需要能够放得下你的system.ace文件即可)2. partition 2 - type = linux swap (82) - size = 256mb (这个其实看情况了,不分swap也可以)3. partition 3 - type = linux (83) - size = ? (cf还剩多少就分多少,用来存放根文件系统)可以看出,上面三个区分别对应常说的/boot,/swap和/三个分区。创建cf卡文件系统xilinx的systemace控制器比较特殊,并不是说随便一个cf卡插上去就可以使用的,必须专门为cf卡创建特定文件系统。能够完成这个任务的是mkdosfs这个软件。用下面的命令对cf卡进行操作即可:mkdosfs -s 8 -f 16 -r 1 f:-s后面跟的数字表示每簇扇区数目,一般是2的整数次方。下面是fat16文件格式通常容量对应的每簇扇区数目。16–128mb 4128–256mb 8256–512mb 16512–1024mb 321024–2048mb 64不过我发现这个-s后面的数字其实可以大一些,比如我用64,除了在执行命令的时候会出现一个warningwarning: not enough clusters for a 16 bit fat! the filesystem will bemisinterpreted as having a 12 bit fat without mount option “fat=16′.其它没有什么问题。-f表示fat的大小,这里是fat16,-r的值这里不要改动,保留扇区的数目,老问题了,有兴趣的可以去网上搜索。最后一个f:是在 windows下的cf卡卷标,根据你自己的系统来调整它。如果是linux环境,将这个卷表换成是/dev/fdx这种形式。具体设备名自行查询。下载内核文件ok,到这里,我假设你已经编译成功,产生了你所需要的zimage文件,好,现在该怎么用这个文件呢?有三种方式:1 把该文件和硬件bit流合成ace文件,放到flash上面自行加载2 通过自己编写的bootloader将flash上面的elf文件加载到内部ram中3 通过xmd的dow命令来下载elf文件第二种方法我还没有研究,嘿嘿,所以就先不介绍了,要是哪位朋友对bootloader比较熟的,恳请指教一下~~好了,首先详细介绍一下很多人使用的ace方式。创建ace我们可以通过xmd工具来进行ace文件的创建,命令如下:xmd -tcl genace.tcl -opt genace.optgenace.tcl是存在于xps安装目录下的data/xmd目录下,而genace.opt需要自己创建,内容如下:-jprog-board user-target ppc_hw-hw implementation/download.bit-elf zimage.elf-configdevice devicenr 1 idcode 0×1127e093 irlength 14 partname xc2vp30-debugdevice devicenr 1 cpunr 1-ace system.ace-hw和-elf这两行是需要你根据自己的情况修改的,唯一需要注意的是,如果你的开发环境是linux系统,则-hw implementation/download.bit这句要改为-hw ./implementation/download.bit在system.ace文件被拷贝到cf卡上之后,修改一下板子上的跳线,让其成为从jtag启动,就可以始终从cf卡上加载程序。对于非xup的,官方的板子来说,比如ml-403开发板,步骤更加简单,genace.opt的内容如下:-jprog-board ml403-hw implementation/download.bit-elf testapp_memory/executable.elf-ace system.ace你只需要告诉edk板子是ml403就可以了,很多参数都不用自己配置。具体哪些开发板是被xmd直接支持的,可以参考genace.tcl文件。有些朋友会发现,按照上面的步骤操作,可能会出现以下错误提示:error: executable testapp_memory/executable.elf does not contain start address..我在遇到这个错误之后查了一些资料,并按working harddfen照资料所述的修改办法来修改,都没有作用,最后是在朋友的安装了sp的edk环境中将ace文件生成成功的。因此,我怀疑可能是edk无 sp的9.1版本的bug。如果你和我一样头疼于sp的下载,还在使用没有sp的环境……恭喜你,或者想办法去下载sp,或者就找安装了sp的机器来生成吧。其实基于windows的sp比较好找,主要是基于linux的sp太难下了……默哀ing,如果有哪位linuxer知道有别的方法能够修正这个错误,烦请告知,谢谢了。我比较懒,还比较性急,不喜欢看着bit+elf这么大的文件通过9600速度的串口下载到板子上……所以直接使用了最简单的第三种方法,打开xmd,connect ppc hw,dow zimage.elf, con,然后就ok了。终端显示的信息如下:loaded at: 00400000 0066d19cboard data at: 0066b120 0066b19crelocated to: 00404060 004040dczimage at: 00404ed5 0066a3ddavail ram: 0066e000 08000000linux/ppc load: console=ttys0,9600 root=/dev/xsysace/disc0/part3 rwuncompressing linux…done.now booting the kernel……..(以下信息省略)这就表示基本内核建立成功了,我们可以接下去创建root文件系统了。呵呵,我认为最艰难的一步已经被你搞定了,恭喜。如果遇到错误……很多朋友都会遇到下面这种错误inflate returned fffffffb, error is caused by the size of the uncompressed image这表示你的内核解压缩之后大小超过了你的存储空间,通常这种情况出现在你的存储空间定位于bram上。怎么解决呢?很简单,修改ld,把程序定位到ddr上不就行了~~还有的朋友会遇到下面这种错误:linux/ppc load: console=ttys0,9600uncompressing linux…done.now booting the kernelloaded at: 00400000 005331a0board data at: 40000000 4000007crelocated to: 00404084 00404100zimage at: 00404eb9 00530a50avail ram: 00534000 00000000linux/ppc load: console=ttys0,9600uncompressing linux…oops… out of memorypause这个时候检查一下arch/ppc/boot/simple/embed_config.c 中vertex的支持代码是否已经被编译进去(搜索ml403) 如果没有配置的话,板级信息就不会正确建立 。转载:fcni_cn的百度空间
验证市场研究公司发布的人工智能机器人市场研究报告
自动化产线的15家电池/材料企业呈现出的四大特色解析
小米6什么时候上市?小米6明天发布,华为mate10搭载麒麟970争先其后
看见中西方物联网世界的碰撞与融合
贴片电感在led灯里起到什么样的作用?
PowerPC平台Linux的移植(三)
小米已与非洲Jumia达成合作将面向非洲市场在线销售小米手机
ESD防静电二极管 PESD24VS1UB
亿纬锂能发布前三季度业绩报表 营业达收入30.09亿元
四维图新成员企业四维智联获“中国汽车隐形独角兽”称号
经典常用的单片机c程序
传感技术日新月异,关于2017年的十大传感技术突破
嵌入式技术将改变SoC未来的设计方式
明天新机发布汇总:黑莓KEYone、夏普AQUOS S2、OPPO R11巴萨定制版,哪一款才是惊喜满满?
日本采取措施保障物联网设备安全
静电敏感器件,静电敏感器件是什么意思
三星Galaxy Note 10 Lite手机即将登陆印度,售价约为40000印度卢比
分析中国集成电路产业的发展
4525DO-DS3AI005DS压力传感器在医用生物的应用
德州仪器逐年提高工业与车用营收占比 技术发展导向着重延伸性概念