Linux嵌入式驱动初体验(二)--- 内核装载

      对于有操作系统的嵌入式开发来说,在开发板上肯定要有一个可以运行的操作系统,就拿3250上的Linux移植来说,首先要做的就是编译内核源码,下面就说一下整个内核移植的过程吧。

      首先要有内核源代码,但是要知道,这个源代码不是电脑上用的那个源码,而是经过裁剪修改过的,适合3250CPU使用的Linux内核,在3250光盘里提供的内核源码是 linux-2.6.27.8 的,把源码包 linux-2.6.27.8-smartarm3250_V1.00.tar.bz2 复制到一个目录下,然后在终端下输入命令: sudo tar xjvf linux-2.6.27.8-smartarm3250_V1.00.tar.bz ,把文件解压到当前目录下。

      然后就是编译过程,因为这个内核源码是用交叉编译器编译的,而不是电脑上编译内核所使用的gcc了,所以首先要把编译的路径设置好,其实就是运行.bash_profile文件(在上一篇文章里说过,点击这里查看)。然后进入内核源码的文件夹,就是刚才解压出来的 linux-2.6.27.8-smartarm3250,这里先简单介绍一下各个文件夹的用途,不光是针对这个版本的内核,其实几乎所有的版本中都有这些文件夹,而且他们的功能也是基本没有变的:

      arch目录:包含Linux所支持各种不同架构处理器的特殊代码。

      block目录:包含Linux内核支持块设备的一些代码。

      crypto目录:Linux内核加密算法代码存放目录。

      Documentation目录:存放Linux内核和驱动相关文档。

      drivers目录:存放除声卡驱动之外的全部驱动程序源码。

      firmware目录:Linux下允许加载的第三方固件的代码。

      fs目录:Linux所支持的文件系统的代码。

      include目录:包含Linux相关头文件以及各种不同架构的处理器的相关头文件。

      init目录:存放系统初始化相关文件。

      ipc目录:存放Linux进程间通信相关代码。

      kernel目录:包含Linux内和管理代码。

      lib目录:包含Linux的一些库文件。

      mm目录:存放内存管理相关代码。

      net目录:存放网络协议相关代码。

      samples目录:和内核相关的一些反例代码。

      srcipts目录:存放脚本文件。

      security目录:Linux内核安全相关的代码。

      sound目录:声卡驱动代码,和其他一些和声卡相关的代码。

      usr目录:使用initramfs相关代码。

      virt目录:Linux虚拟技术相关代码。

当然在这一级目录下还有一些其他的文件,还有一个最为重要的文件---Makefile,主要是用它来编译内核的,通过它来配置编译内核时所需的文件和编译器的路径,以及生成文件存放的目录,它和另一个文件---Kconfig,一起完成编译工作。

      了解完内核文件的结构后,就是编译过程了,首先在刚才的目录下,输入命令 sudo make smartarm3250——defconfig,这句话的作用是给内核进行配置,配置成出厂默认配置,如果自己有需要改动的地方,可以输入 sudo make menuconfig来进行详细的配置。然后输入 make,就开始编译过程了,这个过程会话比较多的时间,耐心等待把,不过我看有些地方说可以输入 make -j2,使编译过程形成两个进程同时运作,会比较快一些,但是我试验之后还是用相当长的时间的,也可能是快了吧,不过我没有感觉。

      编译好后,就要生成内核镜像,就是要把这个内核镜像放到开发板中,然后运行系统的,因为我们前面说的开发板的启动方式都是用u-boot来启动的,所以这个内核镜像也要弄成一个u-boot认识的格式,所以就是要用u-boot的mkimage程序来生成镜像。首先如果没有这个工具的话,就要进行安装,在终端下输入命令 sudo apt-get install uboot-mkimage。安装好后,在刚才的 linux-2.6.27.8-smartarm3250目录下,输入命令 sudo make uImage,如果成功的话,就会在当前目录的arch/arm/boot下生成一个叫uImage的文件,这个就是我们想要的镜像文件。

      安装镜像到开发板的步骤和前面的文章 《SmartArm3250下的Linux系统安装》 中说的一样,只是不需要其他步骤,只要下载内核这一步,在这再简单说明一下:

      1、在PC机的Linux的终端下打开minicom,启动开发板,进入u-boot命令行下。

      2、输入 tftp 80008000 uImage ,下载uImage文件到开发板中。

      3、输入 nand erase clean 0x00200000 $(filesize) ,擦除内核镜像存放区的一块区域,大小就是刚才传输到开发板的uImage文件的大小。

      4、输入 nand write.jffs2 0x80008000 0x00200000 $(filesize) ,把刚才的uImage文件写入对应的Nand Flash的区域。

      5、输入 setenv kernelsize $(filesize) ,设置内核大小为uImage文件的大小。

      6、输入 saveenv ,保存设置。然后重新启动开发板,就可以看到在启动信息中,内核是刚才的那个uImage了。

      至此,一个新的内核移植完成,也就是完成了内核升级的一个步骤。当然它还有其他的功能,比如自己心编写了一个驱动,要把它随内核一起启动,这时就需要把编写的驱动源文件放到相应的位置,然后按照刚才的步骤编译一下内核,然后把镜像放入开发板,就可以实现把你自己编写的驱动随内核一起启动了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全志V3S是一款嵌入式处理器,为了在该处理器上开发驱动程序,需要了解SPI-NAND存储器的镜像制作和烧入过程。 SPI-NAND存储器是一种通过SPI总线和处理器进行通信的非易失性存储器。制作SPI-NAND镜像的第一步是获取原始镜像文件,该文件包含了存储器的原始数据。在V3S处理器上,可以通过SPI接口读取存储器中的数据。 SPI-NAND镜像文件制作的第步是将原始数据转换为可读取的镜像格式。这可以通过使用专门的工具或库来完成,例如U-Boot中提供的mkenvimage工具。 在制作好SPI-NAND镜像文件后,就可以将其烧入到V3S处理器的存储器中。烧入可以通过多种方法完成,最常见的是使用烧写软件,例如PhoenixSuit。首先,连接V3S处理器和主机,并将处理器进入烧写模式。然后,使用烧写软件选择SPI-NAND镜像文件并启动烧写过程。等待烧写完成后,断开连接并重启V3S处理器即可。 需要注意的是,在进行SPI-NAND驱动开发时,还需要编写相应的设备驱动程序以与处理器进行通信。这包括设置SPI接口的参数、进行数据读取和写入等操作。 总结来说,全志V3S嵌入式驱动开发涉及到SPI-NAND镜像的制作和烧入过程,需要获取原始镜像数据并转换为可读取格式,然后使用烧写软件将其烧入到V3S处理器的存储器中。在开发驱动程序时,还需要编写相应的设备驱动程序以实现与处理器的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值