博客
关于我
6410_Linux系统系统移植 和 驱动加载
阅读量:790 次
发布时间:2023-01-23

本文共 1779 字,大约阅读时间需要 5 分钟。

今天可以说是很开心的一天,因为我终于完成了从基础内核到 ARM 嵌入式内核的学习和移植工作,加上自己制作的 Uboot 和根文件系统,充满了成就感。从发表ARM_Linux项目拉力正式开始的一周内,我完成了一个不错的开始。我使用的开发环境是VMware 虚拟机 Ubuntu10.10,飞凌OK6410开发板,最终移植的内核为Linux-2.6.34.11。板子实现了启动Uboot,加载内核,挂载NFS 主机上的根文件系统,并成功测试并加载OK6410 的LED 灯驱动,驱动正常工作。虽然我参考了许多网友的资料,其中包括不少CSDN的博友,但最终我还是按照一篇详细的博文进行操作。

Uboot的移植

为了参考飞凌提供的Uboot进行自行制作,工作相对简单。飞凌的Uboot是仿照三星 smdk6410 的板子主体来的。而我们用的通用Uboot中有一个配置项:smdk6410_config : uconfig。配置这一项时,Makefile 中的代码是:

@$(MKCONFIG) $(@:_config=) arm s3c64xx smdk6410 samsung s3c6410

如果需要改写板载文件,可以参考百度文库《我的arm_linux移植笔记.pdf》。但如果是飞凌的OK6410或其他 ARM11 开发板,我不建议修改这一项,因为飞凌的Uboot和内核都严格依赖于 smdk6410。另外,注意修改通用的Uboot 中的 include/configs/ 目录下的 smdk6410.h 文件,并参考 ./cpu/samsung/smdk6410/start.S 的修改。

根文件系统的制作

根文件系统的构建遵循 FHS 文档。需要创建以下顶层目录:

bin  sbin  usr  proc  dev  etc  lib  home  mnt  tmp  var  root

每个目录下再细分:

  • /usr/bin, /usr/sbin
  • /etc/init.d, /etc/rc.d, /etc/sysconfig
  • /usr/lib, /usr/modules, /usr/sbin
  • /dev/null, /dev/console, /dev/pts
  • /mnt/etc, /mnt/jffs2, /mnt/yaffs, /mnt/data, /mnt/temp

创建设备文件:

mknod -m 600 dev/console c 5 1mknod -m 600 dev/null c 1 3

部分目录需要特殊权限:

chmod 1777 tmpchmod 1777 var/tmp

交叉编译Busybox:

  • 解压Busybox源码并拷贝到根目录。
  • 编译并配置支持:
  • CROSS_COMPILE ?= arm-linux- ARCH ?= arm
    1. 运行 make menuconfig 并选择必要选项。
    2. 内核编译与移植

      构建内核时,需注意飞凌内核的硬件配置。在 arch/arm/mach-s3c64xx/mach-smdk6410.c 文件中,寻找分区信息。在 Linux 2.6.28 内核中,这些信息位于 ./arch/arm/plat-s3c/include/plat目录下,2.6.36 则放在 ./arch/arm/mach-s3c64xx/include。飞凌统一目录后会增加开发难度,因而我专注于 LED 驱动的添加。

      修改内核以支持 LED:

    3. 定义GPIO 配置。
    4. 添加 LED 驱动到内核的设备目录:
    5. smdk6410_devices[] __initdata = {    &s3c_device_i2c0,    &s3c_device_i2c1,    &s3c_device_fb,    ...};
      1. 编译并验证。
      2. 常见问题

      3. 内核大小过大:若启动失败,检查 ounces 碳文件大小,确保不超过 3.4MB。
      4. RTC 硬件支持:在 2.6.34 内核中缺少支持,需手动补丁并更新。
      5. 设备节点配置:确保所有设备节点存在,否则启动无法继续。
      6. 总结

        通过详细的思考和尝试,我完成了从零开始的 ARM 嵌入式系统移植工作。这一过程充满挑战,但收获宝贵。我希望这篇文章能为其他移植新手提供参考,并激励更多人参与嵌入式开发。

    转载地址:http://zseyk.baihongyu.com/

    你可能感兴趣的文章
    社区医疗app-Ui设计
    查看>>
    HTML 表单验证
    查看>>
    mysql时间为0000-00-00 00:00:00时,程序读取错误
    查看>>
    ubuntu System program problem detected
    查看>>
    使用ivx图表组件的经验总结
    查看>>
    17场演讲,500+嘉宾 |「观远2020智能决策峰会暨产品发布会」看点先知道
    查看>>
    专访汇付数据副总裁姜靖宇:“纸上谈兵”时代终结,人工智能将变革第三方支付行业
    查看>>
    Redis学习笔记—单个键管理
    查看>>
    wordpress架站踩坑过程
    查看>>
    一个简单的游戏框架[汇总]
    查看>>
    免费好用的证件扫描仪-扫描全能王
    查看>>
    面试题5:(事务管理) ACID 是什么?
    查看>>
    10.Mybatis执行流程
    查看>>
    SpringMvc前台传Date类型到后台报400错误。
    查看>>
    Http状态码
    查看>>
    通信过程图
    查看>>
    maven核心
    查看>>
    使用maven
    查看>>
    依赖范围scope
    查看>>
    apache服务器 vs Tomcat服务器
    查看>>