基于u-boot源码的简单shell软件实现
摘要:一、概述1、shell概念 Shell(命令解析器),它用于接收用户输入的命令,进行解析,然后调用相应的应用程序,为使用者提供了使用软件的界面。 shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,执行相应的应用程序,并且输出各种各样的处理...
阅读全文
posted @
2014-05-30 17:01
amanlikethis
阅读(2017)
推荐(0) 编辑
u-boot Makefile Source Test
摘要:一、概述 笔者已经写了一篇实现目标文件与源码分开的makefile测试实验,但是觉得不够完美,没有更多的体现u-boot Makefile的工作原理和特点。所以,决定重新修订,使之更加充分的接近u-boot Makfefile的原貌。 至于,u-boot Makfefile的整体论述和特点,笔者在u
阅读全文
posted @
2014-04-14 11:36
amanlikethis
阅读(509)
推荐(0) 编辑
u-boot子目录Makefile分析
摘要:一、概述 u-boot的子目录Makefile是整个Makefile体系的重要组成部分,决定了对应子目录的编译过程。二、分析 以cpu/arm920t/Makefile为例进行说明(1)首先,调用顶层目录定义的编译规则config.mkinclude $(TOPDIR)/config.mk(2)...
阅读全文
posted @
2014-04-14 09:43
amanlikethis
阅读(752)
推荐(0) 编辑
u-boot烧写Linux及系统整个启动过程
摘要:一、烧写文件u-boot: u-boot.binlinux kernel: uImageFilesystem: root.bin(yaffs)二、烧写步骤1、烧写u-boottftp0x30000000u-boot.bin;nanderasebios;nandwrite.jffs20x30000000bios
(filesize)2、烧写内核tftp0x30000000uImage;nanderasekernel;nandwrite.jffs20x30000000kernel(filesize)3、 烧写根文件系统tftp0x30000000root.bin;nanderaseroo...
阅读全文
posted @
2014-04-01 19:18
amanlikethis
阅读(856)
推荐(0) 编辑
uboot移植之环境变量在NandFlash
摘要:一、概述 u-boot环境变量可以设置在Norflash上,也可以在NandFlash上。 倘若环境变量在NorFlash上,再假设S3C2440从NorFlash启动,是能正确从NorFlash上读取环境变量。但是,倘若从NandFlash启动,由于Bank0被挂载成S3C2440的stepstone,就不能从NorFlash上读取环境变量。 倘若环境变量在NandFlash上,无论S3C2440以什么方式启动,由于NandFlash的逻辑空间与S3C2440的逻辑空间独立,NandFlash都能够正常使用,当然也能够从NandFlash上读取环境变量。二、参数收集1、NandFlas...
阅读全文
posted @
2014-04-01 10:37
amanlikethis
阅读(1459)
推荐(0) 编辑
uboot的mtd功能支持
摘要:一、概述1、MTD MTD是Flash的一种管理方法,将Flash划分成几个分区,便于管理。 u-boot的MTD功能是在文件cmd_jffs2.c中实现的,由此我们可以知道怎样打开u-boot的MTD功能。2、MTD的作用 (1)对Flash构建了分区表,从而能够启动linux系统 (2)nand命令可以使用宏参数,例如“nand read.jffs2 0x30007FC0 kernel;”命令中的kernel,kernel参数 代表了内核分区的加载地址和大小。二、移植 整个操作都是对TQ2440.h的修改。1、使能MTD功能、定义MTD分区表/* * config mtd...
阅读全文
posted @
2014-03-31 21:21
amanlikethis
阅读(3383)
推荐(0) 编辑
编译u-boot命令和u-boot常用命令
摘要:一、编译u-boot命令1、配置开发板#make TQ2440_config2、编译#make all3、交叉编译器是crosstools_3.4.5_softfloat” 使用4.3.3版本的会出现问题。 编译linux内核用的是4.3.3版本的,否则也会出问题。二、u-boot常用命令1、help 命令2、下载命令(1)tftpboot [loadaddr] [bootfilename] 从tftp服务器上下载文件(2)usbslave 1 [loadaddr] 借助DNW下载文件3、内存操作命令 md 显示内存 .b 以字节显示 .w 以字显示4、NorFlash操作命...
阅读全文
posted @
2014-03-21 11:14
amanlikethis
阅读(584)
推荐(0) 编辑
uboot启动linux的过程
摘要:一、概述 linux内核镜像常见到的有两种形式,zImage和uImage。这两种文件的格式稍有差别,所以启动这两种格式的内核镜像也会有所不同。目前,uboot只支持启动uImage类型的镜像,对zImage还不支持(但是可以移植,TQ2440就是这样做的)。 二、uImage和zImage 1、z
阅读全文
posted @
2014-03-20 20:50
amanlikethis
阅读(8358)
推荐(0) 编辑
在uboot上创建菜单
摘要:一、原理 菜单其实就是一个uboot中的命令,和其他的命令没有什么差别。 uboot启动时,如果进入uboot命令模式,先运行这个命令,就会打印出一个菜单界面。 在uboot的命令模式,通过键入“menu”命令,同样可以调出这个界面。二、操作步骤1、在common目录下创建cmd_menu.c内容如下:#include #include #ifdef CONFIG_CMD_MENU#define USE_TFTP_DOWN 1#define USE_USB_DOWN 2extern char console_buffer[];/* * Reads and ret...
阅读全文
posted @
2014-02-24 16:49
amanlikethis
阅读(1579)
推荐(0) 编辑
uboot移植参考资料
摘要:参考文档:移植u-boot-1.1.6到TQ2440文档.pdf参考网页:uboot在S3C2440上移植《出自超哥(相广超)》
阅读全文
posted @
2014-02-21 19:43
amanlikethis
阅读(297)
推荐(0) 编辑
uboot使用tftp下载时出现“checksum bad”问题原因分析
摘要:一、问题二、原因分析你的虚拟机是不是这样设置的呢?如果是的话,请看下边的解释: 使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机(比如说我们的开发板)进行通讯。三、解决方法请见在linux下实现UBOOT的TFTP下载功能。参考网页:VMware网络配置详解
阅读全文
posted @
2014-02-21 11:21
amanlikethis
阅读(1314)
推荐(0) 编辑
在linux下实现UBOOT的TFTP下载功能
摘要:一、环境1、条件软件:虚拟机下linux(本文涉及到的是Ubuntu12.0.4)、 linux下的串口助手(例如minicom)或windows下的串口助手(例如超级终端、SecureCRT)硬件:TQ2440开发板、串口、网线(两根)、路由器2、串口助手选择 虽然是在虚拟机linux操作系统下实现TFTP的下载,但串口调试助手没必要是linux下的。实现这个功能的关键在于在linux操作系统下搭建一个TFTP服务器,而串口只是开发板提供给人控制的一个界面,选择windows下的串口也行。 事实上,本人觉得minicom并不好用,先不说界面反人类认知观,主要问题在于它对USB转串口...
阅读全文
posted @
2014-02-21 11:17
amanlikethis
阅读(6918)
推荐(0) 编辑
windows下实现uboot的tftp下载功能
摘要:一、原理分析 带有uboot的开发板实际上充当的就是tftp客户端,而PC机扮演的角色就是tftp服务器端,而tftp下载功能实际上就是文件传输。tftp服务器可以建立在虚拟机linux下,也可以建立在windows下,只要你能提供一个tftp服务器就行。有了这些条件,只要网络畅通(硬件连接),就能实现tftp的下载功能。二、操作步骤1、硬件连接2、在windows下搭建tftp服务器3、配置uboot的网络参数4、下载三、硬件连接方式一:将开发板和PC机的网线都接在路由器的非入口(WAN)端。方式二:直接用一根网线将PC机和开发板的网卡连接在一起四、在windows下搭建tftp服务器 在.
阅读全文
posted @
2014-02-21 09:07
amanlikethis
阅读(2903)
推荐(0) 编辑
find_cmd函数分析
摘要:一、概述1、函数位置 common/command.c2、函数功能分析 解析命令的关键环节是如何根据输入命令查找对应命令的信息,从而跳转到对应命令的函数处执行程序。这必然涉及到如何存放命令的详细信息这个问题。因为一种存法,对应一种查法,进而取法。也就是说,实际上是两个问题:(1)命令的详细信息是如何存放的(2)如何在命令存储区查找是否有与输入命令匹配的命令 就这两个问题,我们来分别分析uboot的设计方法。二、".u_boot_cmd"环境变量存储区1、命令详细信息存储结构体struct cmd_tbl_s { char *name; /* Command Name ...
阅读全文
posted @
2014-02-19 18:06
amanlikethis
阅读(899)
推荐(0) 编辑
run_command函数分析
摘要:一、概述位置:common/main.c功能:根据传入参数(命令),在命令存储区(.u_boot_cmd)中查找对应的命令,找到命令并调用对应的函数执行流程:二、分析1、函数说明信息/***************************************************************************** returns:* 1 - command executed, repeatable* 0 - command executed but not repeatable, interrupted commands are* always considered n
阅读全文
posted @
2014-02-19 16:21
amanlikethis
阅读(3018)
推荐(0) 编辑
readline函数分析
摘要:函数功能:提示用户输入命令,并读取命令/****************************************************************************//* * Prompt for input and read a line. * If CONFIG_BOOT_RETRY_TIME is defined and retry_time >= 0, * time out when time goes past endtime (timebase time in ticks). * Return: number of read characters
阅读全文
posted @
2014-02-19 15:35
amanlikethis
阅读(2667)
推荐(0) 编辑
uboot main_loop函数分析
摘要:一、概述 main_loop()函数做的都是与具体平台无关的工作。主要包括的工作如下:(1)初始化启动次数限制机制(2)Modem功能(3)设置软件版本号(4)启动延迟(5)读取命令,解析命令二、具体分析void main_loop (void){#ifndef CFG_HUSH_PARSER static char lastcommand[CFG_CBSIZE] = { 0, }; int len; int rc = 1; int flag;#endif#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0) ch
阅读全文
posted @
2014-02-19 11:09
amanlikethis
阅读(6481)
推荐(0) 编辑
__attribute__ ((section(".text")))的测试
摘要:一、测试原因 在学习u-boot的环境变量过程中,看到有如此的代码,现对涉及到的内容进行实验测试。二、测试目的1、了解gcc允许对段的属性进行更改的方法。2、解决”ENV_IS_EMBEDDED“解惑以及相关的移植实验中如何将环境变量(结构体变量environment)定位在代码段的0x33f84000的位置,以实现环境变量区嵌入到代码段的功能。三、测试原理(参考attribute 用法 section 部分) gcc通过选项__attribute__可以改变所声明或定义的函数、数据的特性。它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn...
阅读全文
posted @
2014-01-14 10:49
amanlikethis
阅读(9808)
推荐(1) 编辑
UBOOT的多支持性与可裁剪性
摘要:UBOOT功能强大,适用于多种操作系统,多种处理器架构。 在阅读它的源码时,可以看到cpu目录有各种处理器,而board目录有各种开发板。但是,对于一个特定的实验平台,例如TQ2440开发板,它用到的只是cpu、board等目录中的一个或者部分文件和文件夹。 不同的处理器,它们的架构不一样,所以编译器肯定也不一样。但是,对于一个特定的实验平台,例如S3C2440,它用到的arm-linux-gcc编译器。 UBOOT可以应用于多种平台,但是对于特定的平台,它只会用到部分文件和文件夹,也只会用到一种编译器。 UBOOT目录中有大量的Makefile文件和配置文件,我想就是为了从众多的...
阅读全文
posted @
2014-01-10 19:27
amanlikethis
阅读(401)
推荐(0) 编辑
uboot的jumptable_init函数分析
摘要:一、函数说明函数功能:安装系统函数指针函数位置:common/exports.c二、函数分析 1 void jumptable_init (void) 2 { 3 int i; 4 5 gd->jt = (void **) malloc (XF_MAX * sizeof (void *)); //在堆中开辟指针空间 6 for (i = 0; i jt[i] = (void *) dummy; //指针空间都初始化成指向空函数 8 //依次安装函数指针 9 gd->jt[XF_get_version] = (...
阅读全文
posted @
2014-01-07 16:18
amanlikethis
阅读(1607)
推荐(0) 编辑