直接移植GCC和GLIBC二进制文件是否可行?

elated 2012-12-05 08:48:55
一个项目,在LINUX平台上开发。
发布时,希望能在用户机器上用我们自己的编译环境进行编译
即,使用我们指定的GCC编译代码,include我们的头文件,链接到我们的GLIBC
我感觉这样不可行啊,操作系统那么多,一个环境下能用另一个环境下就不行了
GLIBC又依赖于操作系统,GCC,GLIBC又相互依赖
想问问这方面经验比较多的同学,这样做可行么?
另问,LINUX下的程序都是怎么发布的,难道只能用源码在每台机器上编译?
谢谢回复~
...全文
459 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-02-19
  • 打赏
  • 举报
回复
要搞清楚这个问题需要初步了解 ELF 和 GOT 什么时候可以: 大多数时候都可以。只要你编译机用glibc/linux, 运行机也有glibc/linux,那么就可以。 软件代码 = 自身代码 + 库函数的编号 原理是,可执行代码和你include什么头文件没直接关系,生成的机器指令和运行机上一样就可以。 glibc依赖系统,但是linux系统给glibc使用的系统调用号是不变的。各库函数用一个代码表示,此代码在各版本的glibc库中的序号是不变的。 举个例子: int main() { char *buf; buf = (char*)malloc(1024); printf("Malloced %p\n", buf); return 0; } 1). malloc最终会变成系统中的brk, 这个调用对所有linux都一样。 所以可以运行。 2). print/malloc在软件本身代码中只是一个跳转,具体代码由运行机器提供。 (gdb) disassemble main Dump of assembler code for function main: 0x0000000000400504 <+0>: push %rbp <- x86_64 0x0000000000400505 <+1>: mov %rsp,%rbp 0x0000000000400508 <+4>: sub $0x10,%rsp 0x000000000040050c <+8>: mov $0x400,%edi 0x0000000000400511 <+13>: callq 0x400400 <malloc@plt> <-- If have /lib64/glibc, then no problem. 0x0000000000400516 <+18>: mov %rax,-0x8(%rbp) 0x000000000040051a <+22>: mov $0x400640,%eax 0x000000000040051f <+27>: mov -0x8(%rbp),%rdx 0x0000000000400523 <+31>: mov %rdx,%rsi 0x0000000000400526 <+34>: mov %rax,%rdi 0x0000000000400529 <+37>: mov $0x0,%eax 0x000000000040052e <+42>: callq 0x4003f0 <printf@plt> 0x0000000000400533 <+47>: mov $0x0,%eax 0x0000000000400538 <+52>: leaveq 0x0000000000400539 <+53>: retq 什么时候不可以: 1. 编译的机器上链接器指定的运行库不存在/不匹配 这是比较常见的错误,除非你静态编译,否则,软件用到的所有库函数是动态从运行机上装入内存的,没有当然不行. 另外 一个例子是 , x86_64位系统下编译的软件,它链接的是/lib64, 你放32机,当然不行。找不到啊 一般来说,代码启动时就会发现这个问题,运行失败. 如果软件是用dlopen的方式打开运行库, 可能会在执行到那段逻辑时,才失败,就是说软件可能部分可用. 2. 编译的机器和目标机的平台不一样. 估计楼主不是说的这个,一个x86上编的代码,你想放手机上(可能是ARM)运行,当然不行. 他们的机器指令不一样. 需要交叉编译。
LouisScola 2012-12-14
  • 打赏
  • 举报
回复
其实看情况了,OS,CPU差别不大的话是可以用的
RedWolf1999 2012-12-13
  • 打赏
  • 举报
回复
很多芯片厂商不就是连交叉链、库等都会提供好给OEM厂商么?
buyong 2012-12-06
  • 打赏
  • 举报
回复
在你机器上编好可执行程序,直接拿到别的Linux上,直接用就行了
fdl19881 2012-12-06
  • 打赏
  • 举报
回复
引用 10 楼 elated 的回复:
引用 4 楼 fdl19881 的回复:glibc就是跨平台的,在每个linux平台上都有提供对应的版本。不需要你自己写然后跨平台.在说你自己写的glibc会比gnu glibc的更好? 因为客户机器GLIBC的版本我们并不知道,而程序对GLIBC的版本有要求 并不是说自己写libc,这个难度太大了
将程序对版本的要求的地方换成自己写的函数。。(若依赖于glibc提供的系统级别的API,如pthread这类等等。)
elated 2012-12-06
  • 打赏
  • 举报
回复
引用 4 楼 fdl19881 的回复:
glibc就是跨平台的,在每个linux平台上都有提供对应的版本。不需要你自己写然后跨平台.在说你自己写的glibc会比gnu glibc的更好?
因为客户机器GLIBC的版本我们并不知道,而程序对GLIBC的版本有要求 并不是说自己写libc,这个难度太大了
elated 2012-12-06
  • 打赏
  • 举报
回复
引用 1 楼 lishanchao 的回复:
我见过一个项目,Intel是这么提供环境的:提供gcc编译器的源码,用户自己编译出交叉工具链,然后再用它编译源码,生成最终的Firmware。 不知楼主是什么样的项目,或者,静态编译可以满足?
有多线程,对文件读写等,静态编译不行
elated 2012-12-06
  • 打赏
  • 举报
回复
引用 7 楼 wenxy1 的回复:
不可行. 应当使用同一个平台的编译器,库和可执行文件. 重新编译吧.
都是X86-64平台,之所有想这么做,是因为用到的库对glibc版本有限制 而程序运行的机器上的glibc的又不一定满足版本要求 而又不想要求别人更新glibc,所以想随着环境一同发布
Wenxy1 2012-12-06
  • 打赏
  • 举报
回复
不可行. 应当使用同一个平台的编译器,库和可执行文件. 重新编译吧.
沭水河畔 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 buyong 的回复:
在你机器上编好可执行程序,直接拿到别的Linux上,直接用就行了
在程序编写不规范的情况下,比如某些变量未初始化,在不同的系统上确实可能有不同的结果。
fdl19881 2012-12-06
  • 打赏
  • 举报
回复
移植是指从源码上移植,然后用对应平台的编译器编译出二进制。
fdl19881 2012-12-06
  • 打赏
  • 举报
回复
glibc就是跨平台的,在每个linux平台上都有提供对应的版本。不需要你自己写然后跨平台.在说你自己写的glibc会比gnu glibc的更好?
fdl19881 2012-12-06
  • 打赏
  • 举报
回复
一份源码(已经做好了跨平台的源码),分平台编译。 一份二进制不可能在不同平台(x86,arm等)上都能运行的。
沭水河畔 2012-12-05
  • 打赏
  • 举报
回复
我见过一个项目,Intel是这么提供环境的:提供gcc编译器的源码,用户自己编译出交叉工具链,然后再用它编译源码,生成最终的Firmware。 不知楼主是什么样的项目,或者,静态编译可以满足?
资源大于15MB分2次上传。 清晰度一般。加到11章 第12,13章没有。 第1章 嵌入式系统基础. 1.1 嵌入式系统简介 1.1.1 嵌入式系统定义 1.1.2 嵌入式系统与PC 1.1.3 嵌入式系统的特点 1.2 嵌入式系统的发展 1.2.1 嵌入式系统现状 1.2.2 嵌入式系统发展趋势 1.3 嵌入式操作系统与实时操作系统 1.3.1 Linux 1.3.2 uC/OS 1.3.3 Windows CE 1.3.4 VxWorks 1.3.5 Palm OS 1.3.6 QNX 1.4 嵌入式系统选型 第2章 基于ARM9处理器的硬件开发平台 2.1 ARM处理器简介 2.1.1 ARM公司简介 2.1.2 ARM微处理器核 .2.2 ARM9微处理器简介 2.2.1 与ARM7处理器的比较 2.2.2 三星S3C2410X处理器详解 2.3 FS2410开发平台 第3章 创建嵌入式系统开发环境 3.1 嵌入式Linux的开发环境 3.2 Cygwin 3.3 虚拟机 3.4 交叉编译的预备知识 3.4.1 Make命令和Makefile文件 3.4.2 binutils工具包 3.4.3 gcc编译器 3.4.4 Glibc库 3.4.5 GDB 3.5 交叉编译 3.5.1 创建编译环境 3.5.2 编译binutils 3.5.3 编译bootstrap_gcc 3.5.4 编译Glibc 3.5.5 编译完整的gcc 3.5.6 编译GDB 3.5.7 成果 3.5.8 其他交叉编译方法 3.6 通过二进制软件包创建交叉编译环境 3.7 开发套件 第4章 调试嵌入式系统程序 4.1 嵌入式系统调试方法 4.1.1 实时在线仿真 4.1.2 模拟调试 4.1.3 软件调试 4.1.4 BDM/JTAG调试 4.2 ARM仿真器 4.2.1 techorICE ARM仿真器 4.2.2 ARM仿真器工作原理 4.2.3 ARM仿真器的系统功能层次 4.2.4 使用仿真器和ADS Debugger调试ARM开发板 4.3 JTAG接口 4.3.1 JTAG引脚定义 4.3.2 通过JTAG烧写Flash 4.3.3 烧写Flash技术内幕 第5章 Bootloader 5.1 嵌入式系统的引导代码 5.1.1 初识Bootloader 5.1.2 Bootloader的启动流程 5.2 Bootloader之vivi 5.2.1 vivi简介 5.2.2 vivi的配置与编译 5.2.3 vivi代码导读 5.3 Bootloader之U-Boot 5.3.1 U-Boot代码结构分析 5.3.2 编译U-Boot代码 5.3.3 U-Boot代码导读 5.3.4 U-Boot命令 5.4 FS2410的Bootloader 第6章 Linux系统在ARM平台的移植 6.1 移植的概念 6.2 Linux内核结构 6.3 Linux-2.4内核向ARM平台的移植 6.3.1 根目录 6.3.2 arch目录 6.3.3 arch/arm/boot目录 6.3.4 arch/arm/def-configs目录 6.3.5 arch/arm/kernel目录 6.3.6 arch/arm/mm目录 6.3.7 arch/arm/mach-s3c2410目录 6.4 Linux-2.6内核向ARM平台的移植 6.4.1 定义平台和编译器 6.4.2 arch/arm/mach-s3c2410/devs.c 6.4.3 arch/arm/mach-s3c2410/mach-fs2410.c 6.4.4 串口输出 6.5 编译Linux内核 6.5.1 代码成熟等级选项 6.5.2 通用的一些选项 6.5.3 和模块相关的选项 6.5.4 和块相关的选项 6.5.5 和系统类型相关的选项 6.5.6 和总线相关的选项 6.5.7 和内核特性相关的选项 6.5.8 和系统启动相关的选项 6.5.9 和浮点运算相关的选项 6.5.10 用户空间使用的二进制文件格式的选项 6.5.11 和电源管理相关的选项 6.5.12 和网络协议相关的选项 6.5.13 和设备驱动程序相关的选项 6.5.14 和文件系统相关的选项 6.5.15 和程序性能分析相关的选项 6.5.16 和内核调试相关的选项 6.5.17 和安全相关的选项 6.5.18 和加密算法相关的选项 6.5.19 库选项 6.5.20 保存内核配置 第7章 Linux设备驱动程序开发 7.1 设备驱动概述 7.1.1 设备驱动和文件系统的关系 7.1.2 设备类型分类 7.1.3 内核空间和用户空间.. 7.2 设备驱动基础 7.2.1 设备驱动中关键数据结构 7.2.2 字符设备驱动开发 第8章 网络设备驱动程序开发 8.1 网络设备驱动程序简介 8.1.1 device数据结构 8.1.2 sk_buff数据结构 8.1.3 内核的驱动程序接口 8.2 以太网控制器CS8900A 8.2.1 特性 8.2.2 工作原理 8.2.3 电路连接 8.2.4 引脚 8.2.5 操作模式 8.3 网络设备驱动程序实例 8.3.1 初始化函数 8.3.2 打开函数 8.3.3 关闭函数 8.3.4 发送函数 8.3.5 接收函数 8.3.6 中断处理函数 第9章 USB驱动程序开发 9.1 USB驱动程序简介 9.1.1 USB背景知识 9.1.2 Linux内核对USB规范的支持 9.1.3 OHCI简介 9.2 Linux下USB系统文件结点 9.3 USB主机驱动结构 9.3.1 USB数据传输时序 9.3.2 USB设备连接/断开时序 9.4 主要数据结构及接口函数 9.4.1 数据传输管道 9.4.2 统一的USB数据传输块 9.4.3 USBD数据描述 9.4.4 USBD与HCD驱动程序接口 9.4.5 USBD层的设备管理 9.4.6 设备类驱动与USBD接口 9.5 USBD文件系统接口 9.5.1 设备驱动程序访问 9.5.2 设备拓扑访问 9.5.3 设备信息访问 9.6 设备类驱动与文件系统接口 9.7 USB HUB驱动程序 9.7.1 HUB驱动初始化 9.7.2 HUB Probe相关函数 9.8 OHCI HCD实现 9.8.1 OHCI驱动初始化 9.8.2 与USBD连接 9.8.3 OHCI根HUB 9.9 扫描仪设备驱动程序 9.9.1 USBD接口 9.9.2 文件系统接口 9.10 USB主机驱动在S3C2410X平台的实现 9.10.1 USB主机控制器简介 9.10.2 驱动程序的移植 第10章 图形用户接口 10.1 嵌入式系统中的GUI简介 10.1.1 MicroWindows 10.1.2 MiniGUI 10.1.3 Qt/Embedded 10.2 MiniGUI编程 10.2.1 MiniGUI移植 10.2.2 MiniGUI编程 10.3 初识Qt/Embedded 10.3.1 Qt介绍 10.3.2 系统要求 10.3.3 Qt的架构 10.4 Qt/Embedded嵌入式图形开发基础 10.4.1 建立Qt/Embedded 开发环境 10.4.2 认识Qt/Embedded开发环境 10.4.3 窗体 10.4.4 对话框 10.4.5 外形与感觉 10.4.6 国际化 10.5 Qt/Embedded实战演练 10.5.1 安装Qt/Embedded工具开发包 10.5.2 交叉编译Qt/Embedded库 10.5.3 Hello,World 10.5.4 发布Qt/Embedded程序到目标板 10.5.5 添加一个Qt/Embedded应用到QPE 第11章 Java虚拟机的移植 11.1 Java虚拟机概述 11.1.1 Java虚拟机的概念 11.1.2 J2ME 11.1.3 KVM 11.2 Java虚拟机的移植 11.2.1 获得源码 11.2.2 编译环境的建立 11.2.3 JDK的安装 11.2.4 KVM的移植及编译 11.2.5 KVM的测试 11.3 其他可选的虚拟机 11.4 性能优化
第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3工具介绍...............................................................................................................................8 2软件环境.......................................................................................................................................8 2.1主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader的编写(ADS).................................................................................141 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................162.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU交叉工具链的下载...........................................................................................................28 2.1 ARM官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib的使用..................................................................30 3.2.3 arm­linux­objdump的使用.........................................................................................30 3.2.4 arm­linux­readelf的使用............................................................................................31 3.2.6 arm­linux­copydump的使用......................................................................................32 4 ARM GNU常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot的移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以CPU的频率....................................................................................................37 2.2.7 设置CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装U­BOOT使的栈空间........................................................................................38 2.2.10 BSS段清0................................................................................................................38 2.2.11 搬移Nand Flash代码...............................................................................................39 2.2.12 进入C代码部分.......................................................................................................39 2.3 阶段2的C语言代码部分 .............................................................................................39 2.3.1调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主UBOOT命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot的移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改Makefile..............................................................................................................42 3.2.2 在board子目录中建立crane2410.............................................................................42 3.2.3 在include/configs/中建立配置头文件......................................................................423.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT的Nand Flash移植......................................................................................45 3.2.8重新编译u­boot..........................................................................................................45 3.2.9 把u­boot烧入flash....................................................................................................45 4  U­BOOT命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash分区...................................................................................................................54 1.3.1指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载devfs................................................................................................56 1.4.2配置内核产生.config文件.........................................................................................57 1.4.3编译内核.....................................................................................................................58 1.4.4 下载zImage到开发板................................................................................................58 2 创建uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage的方法...........................................................................................61 2.2.1 获取mkimage工具.....................................................................................................61 2.2.2 修改内核的Makefile文件.........................................................................................61 3追加实验记录.............................................................................................................................62 3.1移植linux­2.6.15.7..............................................................................................................62 3.2移植linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在my_rootfs中建立Linux目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin的Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab文件...................................................................................................................67 4.5 创建inetd.conf配置文件...................................................................................................67 5 移植inetd....................................................................................................................................67 5.1 inetd的选择及获取............................................................................................................67 5.1.1 获取inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝inetd到根文件系统的usr/sbin目录中.............................................................68 6 移植thttpd Web服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改thttpd配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS包...............................................................................................................70 7.1.1 下载cramfs工具........................................................................................................70 7.1.2 制作cramfs包............................................................................................................70 7.1.3 写cramfs包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash驱动的编写与移植........................................................................................71 1 Nand flash工作原理..................................................................................................................71 1.1 Nand flash芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash控制器特性..............................................................................................72 1.2.2 Nand Flash控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在ADS下flash烧写程序.........................................................................................................74 2.1 ADS下flash烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取Nand flash ID......................................................................................................75 2.3.4 Nand flash写入...........................................................................................................76 2.3.5 Nand flash读取...........................................................................................................77 2.3.6 Nand flash标记坏块...................................................................................................78 2.3.7 Nand Flash检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在U­BOOT对Nand Flash的支持............................................................................................82 3.1 U­BOOT对从Nand Flash启动的支持.............................................................................82 3.1.1 从Nand Flash启动U­BOOT的基本原理................................................................82 3.1.2 支持Nand Flash启动代码说明.................................................................................82 3.2 U­BOOT对Nand Flash命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在Linux对Nand Flash的支持.................................................................................................87 4.1 Linux下Nand Flash调用关系..........................................................................................87 4.1.1 Nand Flash设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash设备注册时数据结构包含关系..............................................................87 4.2 Linux下Nand Flash驱动主要数据结构说明..................................................................88 4.2.1 s3c2410专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册driver_register....................................................................................................94 4.3.2 探测设备probe...........................................................................................................94 4.3.3 初始化Nand Flash控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash芯片初始化..............................................................................................94 4.3.6  读Nand  Flash............................................................................................................95 4.3.7  写Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在ADS下cs8900a的实现........................................................................................................95 2.1 在cs8900a下实现的ping 工具.........................................................................................95 3 在u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot下cs8900a的移植说明...........................................................................................96 4 在linux下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux下cs8900a的驱动说明............................................................................................96 4.2 Linux 下cs8900a的移植说明...........................................................................................96 4.2.1 为cs8900a建立编译菜单..........................................................................................96 4.2.2 修改S3C2410相关信息............................................................................................97

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧