嵌入式爱好者

查看: 19634|回复: 25

搭建OK6410开发板开发环境;配置、编译uboot、kernel的全过程

  [复制链接]

0

主题

0

帖子

3

积分

扫一扫,手机访问本帖
发表于 2012-11-25 17:43:58 | 显示全部楼层 |阅读模式
实验平台:
       客户端:OK6410 A 开发板  
       Notebook平台:Windows 7 专业版 32位    +      VMware-7.0.1.rar 与 ubuntu-11.04-desktop-i386.iso
       SD卡、串口转USB专用开发板配的线

开发环境搭建:
     1. 在自己电脑上安装VMare虚拟机,在虚拟机中安装ubuntu-11.04-desktop-i386.iso,安装好之后,打开终端设置linux系统自动从root用户登录进系统,具体的设置如下:
          #sudo   -s
           #sudo  password
            #sudo  gedit   /etc/gdm/custom.conf        //你也可以用vi编辑器,个人习惯。
这时会弹出文本编辑器,将‘custom.conf’内容修改成下面所示内容(若原来文件为空的
话就输入这些内容),保存关闭,重新启动Ubuntu 就会发现已经自动用root 用户登录了。
              [daemon]
              TimedLoginEnable=true
              AutomaticLoginEnable=true
              TimedLogin=forlinx
              AutomaticLogin=root
              TimedLoginDelay=20

       2.  使用FTP在win7和虚拟机中的Ubuntu间传输文件。在VMare中设置network为Bridged ,并确定ubuntu可以online,在Ubuntu中安装vsftpd服务,在win7端安装ftp客户端工具---Xmanager Enterprise 软件。详细安装步骤请参考:OK6410-A开发板LINUX3.0.1用户手册.pdf 中的9.2章节。其中,/forlinx 为我自己在ubuntu的根目录中mkdir的目录,在后面的实验中,这个目录经常用得到,note:forlinx也为我的VMare中linux系统的一个普通用户名,这点你可以自己设置user。

       3.  连接好开发板与PC机之间的USB线和串口线(这要一个转接头),让开发板(开发板中有linux系统)上电,安装那两个驱动(开发板厂商提供的资料的实用工具文件夹中有PL-2303 Driver Installer.exe和USB驱动->DNW驱动)。在pc端安装DNW.exe软件,点软件上的configuraion->options设置,(这里主要说下COM Port的设置,选择com1~4? 要查看你自己pc的设备管理器,串口驱动的信息可知)。设置好之后,DNW软件上方show信息:
[img]file:///C:/Users/doll/AppData/Roaming/Tencent/Users/354779608/QQ/WinTemp/RichOle/$IP_$5O$PAV%7DC1OA)ZU[3PD.jpg[/img] ,说明USB 和串口正常连接,DNW软件设置成功。(在实际操作时,显示信息上USB:XX,这时,只要在uboot界面上输入#dnw  50008000 命令试下)。

       4. 安装交叉编译器(要想在pc机上编译出适合在arm开发板跑的应用程序、内核或者文件系统等,就必须用相应的交叉编译器),在这里,我们安装的交叉编译器为光盘资料中实用工具文件夹下的arm-linux-gcc-4.3.2.tgz  和     cross-4.2.2-eabi.tar.bz2,我在实际试验中, 任意只安装其中的一个交叉编译器时,在编译内核时,都会出不同的Error。最终实验成功的方法是:这两个交叉编译器都安装,我做实验的时候是安装在/usr/local/arm/ 目录下的,个人爱好。同时,在安装成功之后,在修改环境变量时,也是纠结了一下(关于环境变量修改问题,请参考http://bbs.witech.com.cn/forum.php?mod=viewthread&tid=20904&highlight=%BD%BB%B2%E6)。成功修改环境变量的方法是:分别在/etc/bash.bashrc  和  /etc/profile  配置文件中的末尾都添加了一行代码:export  PATH=/usr/local/arm/4.3.2/bin:/usr/local/arm/4.2.2-eabi/usr/bin:$PATH  最后终于成功了。其中,在这花了很多时间,有一次是直接在终端上用arm-linux-gcc 是可以成功编译应用程序的。但在编译不了kernel,最终终于找到了原因是:我只安装了一个编译器4.3.2,并且只在/etc/bash.bashrc下修改环境变量。可能是因为4.3.2中的编译命令不足,或者是因为linux系统在辨别环境变量时容易出问题(自己猜的,只供参考。详细安装步骤参考 OK6410-A开发板LINUX3.0.1用户手册.pdf )。
         做到这里,你的开发环境基本上就搭建好了。现在开始进行下一步了。

对U-boot/kernel进行配置、编译工作
         声明下:我现在所使用的U-boot的源代码是已经被开发板厂商针对OK6410开发板移植过的U-boot源代码文件,其文件为:Linux-3.0.1\uboot_sourcedode\uboot1.1.6_FORLINX_6410.tgz,关于如何移植uboot,这将是我这个菜鸟的下一步奋斗的目标,搞定了们,肯定会公布出来和大家分享的。而Kernel源代码,我是用的Linux-3.0.1\kernel_sourcecode\FORLINX_linux-3.0.1.tar.gz  内核进行试验的。
         配置、编译uboot的具体步骤:
                 1. 在ubunu中用tar解压uboot源代码,并cd到刚解压的uboot源代码目录中。    2. 用命令#make  smdk6410_config 配置config。       3. 用命令#make clean  清除以前的编译信息  4. 用命令#make 开始编译,编译完之后,生成u-boot.bin文件。
   
         配置、编译kernel的具体步骤:
                 1. 在Ubunu中用tar解压kernel源代码文件,并cd的刚解压的kernel目录中。     2. 用命令#make distclean 清除之前的配置和编译信息(其中就包括.config文件和一些.o/.ko编译文件).        3. 下一步应该是配置kernel,一般的情况是用命令#make menuconfig ARCH=arm 来进行配置的,从而得到你自己想要的.config配置文件。但在这里,因为开发板厂商已经在
FORLINX_linux-3.0.1.tar.gz 下放置了一个叫FORLINX6410_CFG的文件,这个文件就是该开发板默认配置的配置文件.config, 所以说,这里对kernel进行配置工作,只要把FORLINX6410_CFG文件重新命名为.config 就行了。用命令:#cp FORLINX6410_CFG .config 实现对kernel的配置工作。      4. 编译kernel,用命令:#make  uImage  ARCH=arm CROSS_COMPILE=arm-linux-     实现编译出适用于运行在开发板上面的内核,在当前目录下的arch/arm/boot目录下生成zImage文件或者uImage文件。(Notes:CROSS_COMPILE指明了使用了交叉编译工具进行编译,当然了,如果是你想编译出来的kernel是运行在X86上面的,那么就没必要使用这个交叉编译工具了。具体参考视频资料:国嵌内核驱动进阶班-3-1---嵌入式Linux内核制作)

         如何用SDcard来烧写uboot、kernel和cramfs文件系统进入开发板   
                烧写之前必须制作用于USB烧写Linux的SD卡,操作方法说简单点就是先格式化SDcard为FAT32格式,然后在win7下用SD_Writer.exe工具把光盘资料中的mmc..bin文件拷贝进SDcard中。其实这个步骤就相当于我们平时制作DOS启动盘一样的方法,它应该是把SDcard先制作成适合开发板用的可启动盘,然后,再拷个uboot在SDcard中,拨动开发板上的启动选项,设置成sd卡启动,开发板上电之后,运行SDcard中的Uboot,通过这种方式来实现Uboot、kernel、文件系统cramfs分别拷贝到nand flash中的地址0~100000、100000~500000、600000~8000000处。拷贝好了之后,拨动开发板上面的硬件启动开关,使之下一次上电时从nand flash启动。其中,有一种很简单的烧写方法是直接把我们前几步制作出来的uboot.bin、zImage或者uImage、Linux-3.0.1/filesystem/ FORLINX_6410_touch.cramfs拷贝进SDcard中,重命名Linux-3.0.1/filesystem/ FORLINX_6410_touch.cramfs文件为cramfs。然后,再插到开发板中,设置成SDcard启动之后,SDcard中的mmc.bin会自动的把uboot、kernel、cramfs烧写进nand flash中。当然了,在开发试验中,一般都是一个一个文件的烧写进nand flash的,Eg. 烧写uboot的大体步骤为:  在uboot模式中输入命令#dnw  50008000  -->  #nand erase  0  100000   -->    #nand write.uboot  50008000   0   100000  ,(Notes:在烧写时一定要看到OK,才说明烧写成功;具体的烧写命令请参考  OK6410-A开发板LINUX3.0.1用户手册.pdf )。

          好了,当着三个文件都烧写完之后,就可以重新上电进入自己配置、编译的linux系统。         








评分

参与人数 1 +12 收起 理由
飞凌-snail + 12 赞一个!

查看全部评分

回复

使用道具 举报

RobinXie 该用户已被删除
发表于 2012-11-25 22:43:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

RobinXie 该用户已被删除
发表于 2012-11-25 22:43:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

 楼主| 发表于 2012-11-26 19:46:55 | 显示全部楼层
本帖最后由 354779608fwfw 于 2012-11-26 19:52 编辑
RobinXie 发表于 2012-11-25 22:43
不会是官方手册吧 是256 4G的吗


不是官方手册,这是自己做了实验后,通过多次调试之后,实验成功。写下来的。一个是怕下次忘记了。再一个是为了感谢之前给我帮助的朋友们,资源共享下。我的是256RAM   2G  NanFlash的。
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

 楼主| 发表于 2012-11-26 19:48:45 | 显示全部楼层
RobinXie 发表于 2012-11-25 22:43
Linux 3.0.1?

恩!我上面做实验用的就是Linux 3.0.1,不过别的高一些的kernel版本我也试过了。
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

发表于 2012-12-1 10:30:39 | 显示全部楼层
赞一个,学习,总结,分享。
点评回复 支持 反对

使用道具 举报

lane260 该用户已被删除
发表于 2012-12-1 18:39:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

wsshopping 该用户已被删除
发表于 2012-12-1 19:51:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

RobinXie 该用户已被删除
发表于 2012-12-2 16:54:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

breeze0906 该用户已被删除
发表于 2012-12-3 19:16:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

pzhsunxu 该用户已被删除
发表于 2012-12-4 15:24:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

hualongguang 该用户已被删除
发表于 2012-12-4 15:55:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

9

帖子

10

积分

发表于 2012-12-4 22:47:31 | 显示全部楼层
:lol不免费啊?
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

452559841 该用户已被删除
发表于 2012-12-7 09:10:14 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

stevenwjp 该用户已被删除
发表于 2012-12-7 14:07:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

3

积分

 楼主| 发表于 2012-12-9 15:19:28 | 显示全部楼层
本帖最后由 354779608fwfw 于 2012-12-9 15:28 编辑
RobinXie 发表于 2012-12-2 16:54
你的tftp和文件系统怎么搞定的


上面的帖子的配置、编译工程中,我是用SD搞的,你说的那个tftp和文件系统,我都搞了一个星期了,现在只能够实现使用nfs挂载飞凌提供的yaffs2文件系统,而我自己按照国嵌视频创建出来的rootfs文件系统在使用nfs挂载时失败了;但自己创建的rootfs目录可以成功通过initamfs挂载,只不过这里会出现一个问题就是用initramfs挂载的rootfs目录,当在DNW下启动系统进入rootfs后,ls显示出来的是乱码,纠结了。
上面说的那两个问题,现在纠结了,都不知道问题出在哪?怎么去解决?
本人大菜鸟一个,搞了一个星期的tftp和文件系统。改天也给贴出来,主要是怕自己改天又忘了。同时说明下,贴出来的目的有三个:一个是为自己做下笔记,总结下,怕忘记了;二是为了感谢那些前辈们,发扬下他们的精神,尽自己的能力,回馈点出来;三是因为自己是菜鸟,想尽量和大家多交流着学习。望哪儿有问题们,或者说可以完善的话,多多挺个性,指点指点下。
点评回复 支持 反对

使用道具 举报

zj_zhujuan 该用户已被删除
发表于 2012-12-10 10:27:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

longman2010 该用户已被删除
发表于 2012-12-12 23:21:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

lc8gcboy 该用户已被删除
发表于 2012-12-24 09:55:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

cmy673986 该用户已被删除
发表于 2013-2-26 09:37:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-23 11:28

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表