04-S3C2440u-boot学习之u-boot分析(4)之u-boot命令实现

发布者:诗意世界最新更新时间:2022-03-23 来源: eefocus关键字:S3C2440  u-boo  命令 手机看文章 扫描二维码
随时随地手机看文章

参考《韦东山1期视频》第09课第4节 u-boot分析之u-boot命令实现.WMV


1解析命令:如存在;


while (*str) {

 

/*

* Find separator, or string end

* Allow simple escape of ';' by writing ";"

*/

for (inquotes = 0, sep = str; *sep; sep++) {

if ((*sep==''') &&

    (*(sep-1) != '\'))

inquotes=!inquotes;

 

if (!inquotes &&

    (*sep == ';') && /* separator */

    ( sep != str) && /* past string start */

    (*(sep-1) != '\')) /* and NOT escaped */

break;

}


2提取命令参数


/* Extract arguments */

if ((argc = parse_line (finaltoken, argv)) == 0) {

rc = -1; /* no command at all */

continue;

}

/* Look up command in command table */

if ((cmdtp = find_cmd(argv[0])) == NULL) {

printf ("Unknown command '%s' - try 'help'n", argv[0]);

rc = -1; /* give up after bad command */

continue;

}

struct cmd_tbl_s {

char *name; /* Command Name */

int maxargs; /* maximum number of arguments */

int repeatable; /* autorepeat allowed? */

/* Implementation function */

int (*cmd)(struct cmd_tbl_s *, int, int, char *[]);

char *usage; /* Usage message (short) */

#ifdef CFG_LONGHELP

char *help; /* Help  message (long) */

#endif

#ifdef CONFIG_AUTO_COMPLETE

/* do auto completion on the arguments */

int (*complete)(int argc, char *argv[], char last_char, int maxv, char *cmdv[]);

#endif

};


3增加一个hello命令

参考bootm,在common下创建hello_cmd.c


实现do_hello方法和U_BOOT_CMD


拷贝c文件到common目录下


修改common下的makefile文件:


增加cmd_hello.o

重新make。


执行hello。


关键字:S3C2440  u-boo  命令 引用地址:04-S3C2440u-boot学习之u-boot分析(4)之u-boot命令实现

上一篇:04-S3C2440u-boot学习之u-boot分析(5)_uboot启动内核
下一篇:04-S3C2440u-boot学习之u-boot分析(3)之源码第1、2阶段

推荐阅读最新更新时间:2024-11-09 01:53

OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)
1、交叉编译libjpeg 为了使OpenCV能处理jpeg图像,我们必须事先交叉编译好libjpeg这里使用的版本是jpegsrc.v6b。 下载地址:https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/ 这里使用的安装包:jpegsrc.v6b.tar.gz。 (1)解压、配置 jpegsrc.v6b.tar.gz放在/work/system/目录下. 解压:$tar –zvxf jpegsrc.v6b.tar.gz 进入目录:$cd jpeg-6b 在/work/system/目录下新建一个libjpeg-arm目录,命令为:$sudo mkdir
[单片机]
OpenCV2.0.0移植到ARM9(二)(JZ2440----S3c2440)
(一)s3c2440——GPIO(流水灯实验)
一、GPIO流水灯实验 1、实验目的   a:掌握GPIO的使用方法   b:熟悉Linux下编程的方法 2、实验内容   通过控制GPIO引脚来使LED显示 3、主要程序:   a:start.S文件是启动文件。第一个开始的程序。它实现的功能是关闭看门狗(不关闭会一直重启),并且设置堆栈(调用c函数之前必须设置堆栈)。   b:Makefile文件。它是进行编译链接生成可执行文件。   c:blink.c文件。实现主要功能,使led灯实现流水的效果 4、GPIO主要操作两个寄存器GPXCON和GPXDAT。前者设置引脚的模式(输出、输入、中断等),后者设置引脚的电平。   但是在操作过程中,出现了
[单片机]
(一)<font color='red'>s3c2440</font>——GPIO(流水灯实验)
S3C2440驱动篇—Linux平台设备驱动
在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。 一个现实的Linux 设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2C、SPI 等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC 系统中集成的独立的外设控制器、挂接在SoC 内存空间的外设等确不依附于此类总线。基于这一背景,Li
[单片机]
为mini2440生成uImage命令参数介绍
mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d arch/arm/boot/zImage uImage 参数解释: -n 'mini2440' // 指定原始内核镜像名称,即用mini2440来生成uImage -A arm // 指定将要运行镜像的芯片架构为ARM内核 -O linux // uboot将要引导的操作系统为LINUX -T kernel // 设置将生成镜像的类型为内核类型 -C none
[单片机]
SDRAM调试总结
1 说明 实验平台: JZ2440 CPU: S3C2440 SDRAM型号: EM63A165TS-6G 2 SDRAM的一些基本概念 2.1 引脚分配 2.2 引脚描述 A0-A12 :地址线 DQ0-DQ15 :数据线 LDQM、UDQM :数据屏蔽控制 BA0-BA1 :L-BANK地址线 CLK :时钟 CKE :时钟使能 CS# :片选 WE# :写使能 CAS# :列地址选通脉冲 RAS# :行地址选通脉冲 VSS、VSSQ :地 VDD、VDDQ :电源 2.3 内部框图 2.4 基本概念 初始化完成之后,想要对一个L-BANK的阵列进行寻址,需要经过片选、选择L-BANK、激活对应的行,选
[单片机]
SDRAM调试总结
S3C2440定时器相关配置
定时器配置的相关寄存器如下(以s3c2440手册顺序列出) 1. TCFG0:定时器配置寄存器0 功能:定义器的死区长度及预标定器值的设置 说明:bit 设置定时器0和1的预标定器值,bit 设置定时器2、3和4的预标定器值。 2. TCFG1:定时器配置寄存器1 功能:DMA方式选择、时钟分频以及外部时钟选择 注意:bit =0000时,不选择DMA(初学者) 3. TCON:定时器控制寄存器 功能:自动重载是否开启,输出反相是否开启,手动更新设置,定时器的开启和停止。 4. TCNTB:定时器缓存寄存器 功能:存储定时器初始计数值。当递减计数器减为0时,定义时器中断请求生成通知CPU定时器操作完成。此时相应的TCNTB的值装载
[单片机]
CC2530串口命令控制LED灯开关
实验要求 代码实现 #include ioCC2530.h #define D4 P1_1 #define D6 P1_4 unsigned char temp=0;//接收命令变量 //系统时钟切换函数从16M——32M void Set_Clock_32M() { CLKCONCMD &=~0x40; while(CLKCONSTA &0X40) { } CLKCONCMD &=~0x47; } //端口初始化函数 void Init_Prot() { //配置4个LED灯的引擎 //选择端口的功能 P1SEL &=~0x1B;//设置通用io端口 //配置端口的方向 P1DIR |
[单片机]
CC2530串口<font color='red'>命令</font>控制LED灯开关
S3C2440 从NANDFLASH启动的设计原理与过程
S3C2440有两种启动方式:NORFLASH启动与NANDFLASH启动;但一般都只从NANDFLASH启动,既然是从这个地方启动,那必须具备两个条件: 1 这个里面必须得有程序 2 必须得有内存去跑这段程序 第一个条件,我们必须通过JTAG下载程序到NANDFLASH,假设下载了一个LED测试程序在里面了; 第二个条件,要跑这段程序必须有内存,可这个时候SDRAM还没有初始化,不能跑,怎么办?S3C2440里面有一个4k空间的SRAM,当芯片复位的时候会通过外部引脚首先判断使用哪种启动方式,如果是NANDFLASH启动方式,S3C2440的Nand Flash控制器有一个特殊的功能,在S3C2440上电后,Na
[单片机]
<font color='red'>S3C2440</font> 从NANDFLASH启动的设计原理与过程
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved