泉州网站设计公司织梦网站访问量统计代码
news/
2025/9/23 1:24:28/
文章来源:
泉州网站设计公司,织梦网站访问量统计代码,太原市一页网络科技有限公司,潍坊网络科技一个完整的嵌入式linux系统包含4部分内容#xff1a;Bootloader、Parameters、Kernel、Root File System。3、4、5、6部分详细介绍了这4部分的内容#xff0c;这是Linux底层软件开发人员应该掌握的。通过学习这些章节#xff0c;您可以详细了解到如何在一个裸板上裁减、移植…一个完整的嵌入式linux系统包含4部分内容Bootloader、Parameters、Kernel、Root File System。3、4、5、6部分详细介绍了这4部分的内容这是Linux底层软件开发人员应该掌握的。通过学习这些章节您可以详细了解到如何在一个裸板上裁减、移植Linux如何构造自己的根文件系统如何编写适合客户需求的驱动程序——驱动程序这章将结合几个经典的驱动程序进行讲解。您还可以了解到在用在nand flash上的非常流行的yaffs文件系统是如何工作的本书将结合yaffs代码详细介绍yaffs文件系统。 BIOS、BootLoader、uboot对比 bios BIOS是英文Basic Input Output System的缩略语直译过来后中文名称就是基本输入输出系统。其实它是一组固化到计算机内主板上一个ROM芯片上的程序它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 BootLoader BootLoader是一段小程序可以把它想象成PC机linux上的GRUB/LILO引导程序只不过在嵌入式linux中没有BIOS而是直接从flash中运行来装载内核。它可以初始化硬件设备从而将系统的软硬件环境带到一个合适的状态以便为最终调用操作系统做好准备。 一个嵌入式系统从软件角度来看分为三个层次1.引导加载程序包括固化在固化中的boot程序可选和BootLoader两大部分2.linux内核特定于嵌入式平台的定制内核3.文件系统包括了系统命令和应用程序-------------------------------------------------------------------------------- BootLoader--Boot Parameters--Kernel--Root Filesystem --------------------------------------------------------------------------------为什么需要进行bootloader移植答1.因为每种不同的CPU体系结构都有不同的BootLoader2.BootLoader依赖于具体的嵌入式板级设备的配置--------------------------------------------------------------------------------BootLoader启动过程可分为单阶段和多阶段(stage1、stage2),其中stage1完成初始化硬件如CPU寄存器、内存控制器为stage2准备内存空间。一般stage1是可以直接在nor flash中运行的并将stage2复制到内存RAM中设置堆栈然后跳转到stage2(从这也可以看出stage2是在RAM中运行的与stage1不同)BootLoader的stage1通常包括以下步骤1.硬件设备初始化 如CPU寄存器、内存控制器2.为加载BootLoader的stage2准备RAM空间3.拷贝BootLoader的stage2到RAM空间中4.设置好堆栈 为什么为了跳转到stage2的入口因为stage2大多数是用C语言写的5.跳转到stage2的C入口点BootLoader的stage2通常包括以下步骤1.初始化本阶段要使用到的硬件设备 各种设备如网卡2.将内核映像和根文件系统映像从flash上读到RAM中去3.调用内核-------------------------------------------------------------------------------- uboot Uboot用于多种嵌入式CPU的BootLoader程序支持多种嵌入式操作系统的引导UBOOT目录结构1.Borad 与开发板有关的文件。第一个开发板都以一个子目录出现在当前目录中2.Common 实现Uboot支持的命令3.Cpu 与特定CPU架构相关的代码支持的CPU对应一个子目录(注意CPU与开发板的区别)3.Disk 对磁盘的支持4.Doc 文档目录5.Drivers Uboot支持的设备驱动程序 如各种网卡、串品、USB、支持CFI的Flash6.Fs 文件系统的支持7.Iclude Uboot使用的头文件。该目录下configs目录有与开发板相关的配置头文件 该目录下的asm目录有与CPU体系结构相关的头文件8.Net 与网络协议相关的代码 各路协议的实现9.Tools 生成Uboot的工具如mkimage,crc等等Uboot编译分为两步1.执行每种board相关的配置 如make amdk_24202.编译生成uboot.bin文件 如make CROSS_COMPILEarm-linux-(指定正确路径)--------------------------------------------------------------------------------UBOOT基于单板机提供了丰富的命令集操作UBOOT命令printenv查看环境变量(相当全局变量)setenv 添加、修改、删除环境变量1.setenv name valueset environment variable name to value...2.setenv namedelete environment variable namesaveenv保存环境变量将当前定义的所有变量及其值存入flash中-----------------------------------------------------------------------------------------------------文件下载------------------------------------tftp 通过网络下载文件 使用前配置好网络配置网络1.setenv ethaddr 12:34:56:78:8A:BC2.setenv ipaddr 192.168.1.13.setenv serverip 192.168.1.254 (tftp服务器的地址)连接下载tftp 32000000 uImage把server(IP环境变量中设置的serverip)服务目录下的uImage通过tftp读入到0x32000000处md 显示内存区的内容md[.b,.w,.l]address 如:md.w 1000000mm[.b,.w,.l]address 如mm.w 100000mm 修改内存地址自动递增 提供了一种互动修改存储器内容的方法如果没有输入任何值按回车内容保持不变输入空格然后按下回车结束输入flinfo 查看Flash扇区信息--------------------------------------------------------------------------------protect Flash写保护 打开或关闭扇区写保护用法protect off all 关闭所有扇区的写保护protect on all 打开所有扇区的写保护protect off start end 关闭从start到end扇区的写保护-----》protect off 0 1ffff(前一扇区减去1?)protect on start end 打开从start到end扇区的写保护--------------------------------------------------------------------------------erase 擦除flash扇区用法 erase start end 如: erase 30000 1efff在使用cp命令向Nor型Flash写入数据之前必须先使用erase命令擦除flashcp 数据拷贝cp [.b,.w,.l]saddress daddress lencp提供了一种内存与内存内存与Flash之间数据拷贝的方法如:cp.b 31000000 50000 d0000 即是将内存地址0x31000000处的数据长度为0xd0000拷贝到地址0x50000处Flash中--------------------------------------------------------------------------------执行程序go 执行内存中的二进制代码一个简单的跳转到指定地址go addr[arg...]start application at address addr,passing arg as argumentsbootm 执行内存中的二进制代码bootm [addr[arg...]] 要求二进制代码有固定格式的文件头boot application image stored in memory passing arguments arg...;when booting a Linux kernel,arg can be the address of an initrd imagebdinfo 显示开发板信息 可用于启动linux内核bdinfo命令将在终端显示诸如内存地址和大小、时钟频率、MAC地址等信息这些信息在传递给LIUNX内核一些参数时可能会用到设置自动启动setenv bootcmd tftp 31000000 uImage \;bootm 31000000saveenv 转载于:https://www.cnblogs.com/zhugeanran/p/8426718.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910990.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!