ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:103.96KB ,
资源ID:7238835      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7238835.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(AM335x的linux内核移植.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

AM335x的linux内核移植.docx

1、 摘 要 随着时代的发展,人们的生活越来越离不开电子产品,特别是嵌入式电子产品。嵌入式的发展越来越好,得益于硬件的发展和各类嵌入式系统的进步。在众多的嵌入式系统中,最为让人熟悉的就是linux了。所以,这次的课题就以linux内核为主题,使用的开发板是TI的beaglebone white。 关键词:Linux移植,嵌入式,arm 目录 1.嵌入式系统的概念…………………………………………4 1.1   嵌入式系统定义……………………………………………… 4 1.2   ATME

2、L9200开发平台………………………………………. 4 2. BootLoader简介…………………………………………..4 2.1 Boot Loader概念…………………………………………….. 4 2.2 Boot Loader启动过程……………………………………….. 5 2.3 常用的Bootloader…………………………………………… .5 2.4 u-boot移植…………………………………………………… .5 3. 嵌入式linux操作系统…………………………………….7 3.1 嵌入式Linux…………………………………………………..7

3、 3.2 嵌入式Linux的特点………………………………………….7 3.3 从Linux到嵌入式Linux……………………………………..8 4. 基于BeagleBone的嵌入式linux系统移植……………9 4.1 移植概念………………………………………………………. 9 4.2 Linux与移植相关内核结构………………………………….. 9 4.3 嵌入式Linux 操作系统移植…………………………………9 5 文件系统构建………………………………………………9 6 把u-boot、linux内核、文件系统下载到SD卡中………………11 7启动开发板

4、链接pc,查看效果………………………………….11 8 参考文献....………………………………………………………….13 1.嵌入式系统的概念 1.1  嵌入式系统定义 在信息科学技术爆炸式增长的今天,嵌入式系统早已经融入了我们生活的方方面面。美国汽车大王福特公司的高级经理曾宣称,“福特出售的‘计算能力’已超过了IBM”。这并不是一个哗众取宠或者夸张的说法,在真正感受这句话的震撼力之前,让我们先了解一下嵌入式系统(Embedded Systems)的定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系

5、统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡等均是由嵌入式处理器控制的,嵌入式系统市场的深度和广度,由此可见一斑,尽管如此,它的市场价值也许仍然超过了您的想象:今天,嵌入式系统带来的工业年产值已超过了1万亿美元。 1.2  BeagleBone开发平台 BeagleBone 是仅有信用卡大小的低成本 Linux 计算机,它与 Internet 相连并运行高级操作系统,例如 Android 4.0 和 Ubuntu Linux。BeagleBone 包含大量 I/O

6、 并使用 TI Sitara™ AM335x ARM® Cortex™-A8 处理器为实时分析提供处理能力。要进一步进行定制和扩展,可以使用 Cape 插件板以轻松扩展 BeagleBone 的功能。 BeagleBone 具有广泛的开源软件支持选项,包括社区支持的 Ångström Linux 发行版、Ubuntu 或多个其他 Linux 发行版。它还支持 TI Android DevKit 和 TI Sitara Linux EZ SDK。TI 支持的两个操作系统使您可以快速入门并操作,只需进行简单的设置即可获得开箱即用体验。它们包括用于启动演示、基准和应用的 GUI。此外,您可以快速开

7、始开发您自己的应用。还通过嵌入的 Adeneo 支持Windows Embedded Compact 7。 BeagleBone 是一个由社区支持的平台,可用作构建更完整系统的基础和社区软件基线的目标。作为一种替代方案,德州仪器 (TI) 直接支持 AM335x 入门套件或 AM335x 评估模块。 2. BootLoader简介 2.1 Boot Loader概念 简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备

8、好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的 Boot Loader 设计与实现。 2.2 Boot Loader启动过程 系统上电后,先执行第一阶段代码,进行相应的初始化后,将 Blob 第二阶段代码复制到 RAM 地址 bloc_abs_base,然后跳转到第二阶段开始执行。在第二阶段中,从汇编跳转到 C 的 Main() 函数,继续进行如下工作: 外围的硬件初始化(

9、串口,USB 等); 将 Flash 中的 kernel 加载到 DRAM 的 kernel 区域; 将 Flash 中的 ramdisk 加载到 DRAM 的 ramdisk 区域; 根据用户选择,进入命令行模块或启动 kernel。 2.3 常用的Bootloader (1)Blob Blob是Boot Loader Object的缩写,是一款功能强大的Bootloader。它遵循GPL,源代码完全开放。Blob既可以用来简单的调试,也可以启动Linux kernel。Blob最初是Jan-Derk Bakker和Erik Mouw为一块名为LART(Linux Adva

10、nced Radio Terminal)的板子写的,该板使用的处理器是StrongARM SA-1100。现在Blob已经被移植到了很多CPU上,包括S3C44B0。 (2)Armboot Armboot是一个bootloader,是为基于ARM或者StrongARM CPU的嵌入式系统所设计的.它支持多种类型的Flash;允许映像文件经由bootp . dhcp . tftp从网络传输;支持从串口线下载S-record或者binary文件;允许内存的显示及修改;支持jffs2文件系统等。 (3)u-boot U-Boot,全称Universal Boot Loader,是遵

11、循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。 2.4 u-boot移植 因为TI是一家非常负责的公司,所以它的官网上有非常详细的移植方法文档和工具,这给我们开发人员带来了极大的便利。以下的移植都是

12、参考Ti提供的技术文档的。 我们现在Ti的官网查找对应的资料。全英文的,看得有点吃力。下载Ti提供的在linux地下进行开发的工具ti-sdk-am335x-evm-07.00.00.00,然后安装即可得到。 我们到目录:~/ti-sdk-am335x-evm-07.00.00.00/board-support/u-boot-2013.10-ti2013.12.01/下进行如下米命令进行默认的配置编译: make O=am335x CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm am335x_evm 经过编译完成后,在当前目录下回有一个a

13、m335x目录生成,里面包含了u-boot启动映像u-boot.img文件和MLO文件。 以下是am335x的config.h的部分代码: #ifndef __CONFIG_AM335X_EVM_H #define __CONFIG_AM335X_EVM_H #include #define MACH_TYPE_TIAM335EVM 3589 /* Until the next sync */ #define CONFIG_MACH_TYPE MACH_TYPE_TIAM335EVM /* Clock D

14、efines */ #define V_OSCK 24000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK) /* Custom script for NOR */ #define CONFIG_SYS_LDSCRIPT "board/ti/am335x/u-boot.lds" /* Always 128 KiB env size */ #define CONFIG_ENV_SIZE (128 << 10) #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CON

15、FIG #ifndef CONFIG_SPL_BUILD #define CONFIG_EXTRA_ENV_SETTINGS \ "loadaddr=0x80200000\0" \ "fdtaddr=0x80F80000\0" \ "fdt_high=0xa0000000\0" \ "boot_fdt=try\0" \ "rdaddr=0x81000000\0" \ "bootpart=0:2\0" \ "bootdir=/boot\0" \ "bootfile=zImage\0" \ "fdtfile=undefined\0" \ "conso

16、le=ttyO0,115200n8\0" \ "partitions=" \ "uuid_disk=${uuid_gpt_disk};" \ "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \ "optargs=\0" \ "dfu_alt_info_mmc=" DFU_ALT_INFO_MMC "\0" \ "dfu_alt_info_emmc=rawemmc mmc 0 3751936\0" \ "mmcdev=0\0" \ "mmcroot=/dev/mmcblk0p2 ro\0" \

17、 "mmcrootfstype=ext4 rootwait\0" \ "usbroot=/dev/sda2 rw\0" \ "usbrootfstype=ext4 rootwait\0" \ "rootpath=/export/rootfs\0" \ "nfsopts=nolock\0" \ "static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \ "::off\0" \ "ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rd

18、addr},64M\0" \ "ramrootfstype=ext2\0" \ "mmcargs=setenv bootargs console=${console} " \ "${optargs} " \ "root=${mmcroot} " \ "rootfstype=${mmcrootfstype}\0" \ "usbargs=setenv bootargs console=${console} " \ "${optargs} " \ "root=${usbroot} " \ "rootfstype=${usbrootfstype}\0"

19、\ "spiroot=/dev/mtdblock4 rw\0" \ "spirootfstype=jffs2\0" \ "spisrcaddr=0xe0000\0" \ "spiimgsize=0x362000\0" \ "spibusno=0\0" \ "spiargs=setenv bootargs console=${console} " \ "${optargs} " \ "root=${spiroot} " \ ······ ······ 3. 嵌入式linux操作系统 3.1 嵌入式Linux 嵌入式Linux(Em

20、bedded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统。 3.2 嵌入式Linux的特点 1)性能稳定,功能强大,占用资源较少。Linux是按照POSIX标准编写的,许多源代码借鉴了UNIX。 2)模块的动态加载,独特的内核结构和工作方式使Linux非常适合于工作在嵌入式系统中。 3)良好的平台可移植性,Linux已经支持除i386、i586、i686和arm之外的alpha、m68k、mips、mips64、ppc、sparc、sparc64、ia64的十多

21、种体系结构。 4)系统可剪裁性,可以灵活的添加和删减各种驱动程序,具体的PDE(Portable Digital Equippment)跟实际应用联系十分密切,采用的器件多种多样,良好的平台可移植性和系统可剪裁性对灵活的系统设计有着极其重要的意义,也为开发调试提供了方便。 5)整个系统是免费的,只要遵守GPL规则,任何人都可以使用、修改甚至销售Linux,全世界有无数个人和组织在不断的完善Linux,有众多的计算机厂商提供Linux相关的产品和服务。开放源代码意味着对新设计、制造的硬件产品的快速支持。嵌入式系统的应用领域通常要求系统高度个性化、高度细分。因此,对新产品的快速支持是一

22、个适合推广的嵌入式操作系统必须具备的能力。 6)对多种网络协议的完美支持。在即将到来的后PC时代,联网将成为数字产品必备的能力,没有联网能力的设备,在信息化时代会显得毫无意义。而Linux天生具备优良的网络连接能力,支持当前所有的网络协议。 3.3 从Linux到嵌入式Linux 由于Linux开始是为台式机开发的,与台式机相比,嵌入式系统有自己的一些特点,如内存容量有限等,所以把Linux应用于嵌入式系统,还需要做大量的工作。这些工作包括: 1)嵌入式系统中的挥发性/非挥发性存储器容量受到严格的限制,为适应系统对尺寸的要求,需要剪裁嵌入式Linux的内核。 2)嵌入

23、式系统的主频和总线带宽也经常由于成本或应用的原因,不能或不必提供更高的性能,作为操作系统,嵌入式Linux也需要做出相应的改变,改写某些核心模块和驱动程序。 3)嵌入式Linux直接面向特定的应用,为了适应一些特殊的应用需求,有时必须改变嵌入式Linux的工作方式。例如Linux是一个多线程、多任务的操作系统,并不适用于某些实时性要求较高的环境中,目前已经出现了经过改造的,专门用于实时环境的嵌入式实时Linux。 4)嵌入式Linux的图形环境与桌面系统相比简陋的多,对中文的支持也不够完善,对于某些手持数字设备,这方面还有许多工作要做。 5)在嵌入式系统领域,没有Wintel

24、这样的垄断组织,相比于桌面系统Linux,嵌入式Linux有更大的发展空间。 4. 基于BeagleBone的嵌入式linux系统移植 4.1 移植概念 在同一个硬件平台上可以运行不同的操作系统,比如在PC机上可以运行windows、linux。同样把操作系统和硬件相关的部分做相应的修改就可以运行在不同的硬件平台上,这就叫移植,即把运行在一个平台上的软件,经过修改运行在其它平台。 Linux 本身是个宏内核,这给移植带来了困难,但由于其有清晰的结构,所以移植也相对容易。Linux和CPU相关的目录是arch/和arch/asm-

25、ecture>/目录中,是具体CPU体系的名字如arm。与之相关的结构是arch/arm和arch/asm-arm。嵌入式系统是“硬件可裁剪的”,因此工程师设计的硬件电路有所不同,从而要根据具体的硬件电路进行相应的内核电码移植。 4.2 Linux与移植相关内核结构 1.内存管理: 内存管理的代码主要在/mm,但是特定结构的代码在arch/*/mm。缺页中断处理的代码在/mm/memory.c ,而内存映射和页高速缓存器的代码在/mm/filemap.c 。缓冲器高速缓存是在/mm/buffer.c 中实现,而交换高速缓存是在mm/swap_state.

26、c和mm/swapfile.c。 2.进程间通信: 所有的SystemVIPC对象权限都包含在ipc_perm数据结构中,这可以在include/linux/ipc.h中找到。SystemV消息是在ipc/msg.c中实现。共享内存在ipc/shm.c中实现。信号量在ipc/sem.c中,管道在/ipc/pipe.c中实现。 4.3 嵌入式Linux 操作系统移植 到目录:~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/下 使用默认配置编译: make ARCH=arm CR

27、OSS_COMPILE=arm-linux-gnueabihf- omap2plus_defconfig make ARCH=arm CROSS_COMPILE= arm-linux-gnueabihf- zImage 编译完成后,会在目录./arch/arm/boot/下生成zImage文件。在arch/arm/boot/dts下有相应的device tree 文件。如果不适用默认提供的filesystem,则需要用到相应开发板的dtb文件。如beaglebone需要am335x-bone.dtb。 把内核和对应dtb文件复制到filesystem的/boot目录下。 如果自定义

28、配置的话,可以用menuconfig的图形界面进行配置 make ARCH=arm CROSS_COMPILE=arm-linux-gunueabihf- menuconfig 5 文件系统构建 到~/ti-sdk-am335x-evm-07.00.00.00/filesystem目录下解压 tisdk-rootfs-image-am335x-evm.tar.gz 把kernel 和dtb文件复制到解压出来的文件系统目录下的/boot下。然后再把解压出来的全部文件夹打包。(也可以不压缩打包,详细见下文。) 如果不打包,可以直接将全部目录复制到已经分区好的SDcard的

29、rootfs分区,效果与使用工具把文件系统压缩包写入分区一样,但可能比较耗时。 6 把u-boot、linux内核、文件系统下载到SD卡中 到目录:~/ti-sdk-am335x-evm-07.00.00.00/bin下,使用工具create-sdcard.sh 这个shell脚本可以帮我们对SD卡进行分区,然后帮我们把三个文件都下载到对应的分区里。实际上我们只要用它来分区就可以了,文件可以直接复制到对应分区。 7启动开发板,链接pc,查看效果 启动开发板。使用如下命令minicom –c on –D /dev/ttyUSB0即可连接成功。按一下复位键。即可看到开发板上的

30、系统正在启动。输入默认的用户ID:root即可登陆。 启动时的代码打印内容如下: U-Boot SPL 2013.10-g78d8ebd (Mar 30 2014 - 20:46:34) No AC power, disabling frequency switch reading args spl: error

31、 reading image args, err - -1 reading u-boot.img reading u-boot.img

32、 U-Boot 2013.10-00189-g78d8ebd (Dec 23 2014 - 12:26:16) I2C: ready

33、 DRAM: 256 MiB NAND: 0 MiB MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1 *** Erro

34、r - No Valid Environment Area found *** Warning - bad CRC, using default environment Net: not set. Validating first E-fuse MAC

35、 cpsw, usb_ether Hit any key to stop autoboot: 0 mmc0 is current device Scanning mmc 0...

36、 4117600 bytes read in 580 ms (6.8 MiB/s) 33206 bytes read in 59 ms (548.8 KiB/s) mmc0 is current device SD/MMC

37、 found on device 0 reading uEnv.txt ** Unable to read file uEnv.txt ** 4117600 bytes read in 580 ms (6.8 MiB/s)

38、 33206 bytes read in 59 ms (548.8 KiB/s) Kernel image @ 0x80200000 [ 0x000000 - 0x3ed460 ] ## Flattened Device Tree blob at 80f80000 Booting using the fdt blob at

39、 0x80f80000 Loading Device Tree to 8f321000, end 8f32c1b5 ... OK Starting kernel ...

40、 [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.12.10-ti2013.12.01 (gyn-root@ubuntu) (gcc versio4 [ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2

41、ARMv7), cr=10c53c7d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instructie [ 0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335e [ 0.000000] cma: CMA: reserved 24 MiB at 8d800000 [ 0.000000] Memory policy:

42、ECC disabled, Data cache writeback [ 0.000000] CPU: All CPU(s) started in SVC mode. [ 0.000000] AM335X ES1.0 (sgx neon ) ······ ····· NOTE: If the package is a dependency of another package you will be notified of

43、the dependent packages. You should use the --force-removal-of-dependent-packages option to also remove the dependent packages as well ***************************************************************

44、 *************************************************************** Stopping Bootlog daemon: bootlogd. _____ _____ _

45、 | _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_ | | _| .'| . | . | | __| _| . | | | -_| _| _| |__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_| |___|

46、 |___| Arago Project http://arago-project.org am335x-evm ttyO0 Arago 2013.12 am335x-evm ttyO0 am335x-evm login: 我们输入用户名:root 不用密码即可登陆系统了。 到此,beaglebone的linux内核移植结束。 8 参考文献 Ti官网:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服