- 博客(34)
- 资源 (31)
- 收藏
- 关注
原创 __attribute__机制使用实例
typedef int (*obds_test_t) (void); #define RUN_TEST_COMMON(name, func) \ static int obds_##func (void) \ {
2013-01-31 12:34:38 524
原创 imx53 计算各个模块的时钟函数
/*! * This function returns the low power audio clock. */u32 get_lp_apm(void){ u32 ret_val = 0; u32 ccsr = readl(CCM_BASE_ADDR + CLKCTL_CCSR); if (((ccsr >> 10) & 1) == 0) {
2013-01-30 17:33:31 844
原创 imx53 时钟设置过程和详细说明
/* The function prog_pll sets up all four PLLs as follows: PLL1 800MHz PLL2 400MHz PLL3 216MHz PLL4 595MHz */void prog_pll(void){ // Clear ESDCTL configuration bit to al
2013-01-30 17:31:56 1260
原创 imx53 时钟dpll分析
DPLL reference clockThere are four DPLL's in i.MX53 project namely:• DPLL-1 (typical functional frequency 800Mhz)• DPLL-2 (typical functional frequency 400Mhz)• DPLL-3 (typical functional freq
2013-01-30 17:29:59 895
原创 完成16进制数到10进制转换
/* slen - streng length, e.g.: 23 -> slen=2; abcd -> slen=4 *//* only convert hex value as string input. so "12" is 0x12. */static u32 quick_atoi(char *a, u32 slen){ u32 i, num = 0, digit; f
2013-01-29 17:38:08 525
原创 AHB、APB简介
AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接,作为SoC的片上系统总线,它包括以下一些特性:单个时钟边沿操作;非三态的实现方式;支持突发传输;支持分段传输;支持多个主控制器;可配置32位~128位总线宽度;支持字节、半字节和字的传输。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。基础结构
2013-01-29 17:36:28 888
转载 宝宝受不了挫折的5大原因 6招让孩子变坚强
如今的孩子多是家中独苗,被满满当当的爱包围着,承受力普遍较差。而日后成功者,必定要有所担当,能耐得住生活中的各种考验。这个道理再简单不过,但很多家长爱子心切,做起来还是犯了傻。 孩子为啥“受不了丁点委屈、吃不得一点苦”?本期,记者联合3位资深嘉宾一起探寻出五大形成“病因”,并开出几种对症性“疗方”。要想让孩子的内心变得强大起来,也许你还得学着做一个“爱而不露”的家长,甚至故意给孩子制造
2013-01-28 22:48:08 1142
转载 uboot命令解释与运行分析
这一回来分析一下uboot中命令行的解释, 所以我们直接从main_loop开始分析.1. 从汇编阶段进入c阶段的第一个函数是start_xxx, 如/lib_unicore/board.c中的start_unicoreboot. 前半部分调用了若干初始化函数来进行部分硬件的初始化, 并设置一下环境. 这里不是我们本回要讨论的所以一一跳过. 在start_xxx的最后调用了main_loop(
2013-01-25 17:34:41 467
转载 uboot命令大全
U-Boot还提供了更加详细的命令帮助,通过help命令还可以查看每个命令的参数说明。由于开发过程的需要,有必要先把U-Boot命令的用法弄清楚。接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。1、bootmbootm [addr [arg ...]]- boot application image stored in memorypassing arg
2013-01-25 17:33:19 383
原创 Uboot中raise: Signal # 8 caught解决
同样首先找到这句话在程序中的位置,如下:/lib_arm/eabi_compat.cint raise (int signum){ printf("raise: Signal # %d caught\n", signum); return 0;}再搜索这个函数的调用情况,可是怎么找不到对应的程序,不知道为什么?求解?没能找到根本原因,
2013-01-25 17:30:01 1644
原创 Uboot中*** Warning - bad CRC or MMC, using default environment解决
首先找到打印此信息的位置,搜索可知在/common/env_cmm.c文件中。程序如下:#if !defined(ENV_IS_EMBEDDED)static void use_default(){ puts ("*** Warning - bad CRC or MMC, using default environment\n\n"); se
2013-01-25 17:28:44 6375
转载 uboot第一阶段详细分析
uboot的第一阶段设计的非常巧妙,几乎都是用汇编语言实现的,下面我们一起来看看它的精妙之处吧!首先我们来看一下它的链接脚本,通过它我们可以知道它整个程序的各个段是怎么存放的。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) EN
2013-01-24 12:44:04 570
转载 UBOOT详细解读
大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、Stage1 start.S代码结构u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主
2013-01-24 12:38:10 543
转载 __attribute__ ((aligned (n), packed))
GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。__attribute__ 的语法为:__attribute__ ((语法列表))参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。
2013-01-24 12:33:29 2530
转载 字对齐概念
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某
2013-01-24 12:32:00 672
转载 uboot中,ARM体系下,设置变量4字节对齐
调试程序遇到由于buffer地址不是4字节对齐,所有底层去:u32 *p =(u32 *)buf;使得数据拷贝有误。所以,去参考了uboot中其他人的做法:boards1845flash.c中的:#define __align__ __attribute__ ((aligned (8)))static __align__ ulong precmd0[2] =
2013-01-24 12:09:02 929
原创 imx53 uboot 的spi nor驱动的执行过程?
最近在做imx53 uboot 的spi nor驱动,spi的驱动程序都有就是不知道怎么去初始化和用命令使用spi nor?
2013-01-23 17:41:52 1461 2
转载 Linux内核中container_of宏的理解
linux 中container_of的源码如下:#define container_of(ptr, type, member) ({ const typeof( ((type *)0)->member ) *__mptr = (ptr); (type *)( (char *)__mptr - offsetof(type,member) );}) 可见在
2013-01-23 17:34:23 379
转载 container_of(ptr, type, member)
指针ptr指向结构体type中的成员member;通过指针ptr,返回结构体type的起始地址#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *
2013-01-23 17:33:59 388
转载 TQ2440的学习——UBOOT移植(NAND FLASH的支持)——初步分析
UBOOT中关于NAND FLASH的支持十分完善,从命令上可以看出来,关于NAND FLASH的操作专门有个子系统。在驱动层面,UBOOT使用了MTD驱动规范,这个规范中对NAND FLASH的各种操作实现都很规范,一般来说只改写些少量的代码(相对于MTD设备驱动来说)就可以支持起来。大大减轻了移植难度。一般来说,各个主控芯片的NAND FALSH驱动都存放于drivers/mtd/na
2013-01-22 22:58:43 573
转载 TQ2440的学习——UBOOT移植(NOR FLASH相关操作支持)
UBOOT中可以对NOR FLASH进行操作,默认情况下是开启了CONFIG_CMD_FLASH这个宏的。这个宏支持flinfo(打印flash信息)、erase(擦除数据)和protect(保护)这几个命令,cp命令的NOR FLASH操作部分也会得到支持(将数据从内存复制到NOR FLASH)。UBOOT中各个板子的NOR FLASH的操作都是自己实现的。不过TQ2440和SMDK24
2013-01-22 22:57:18 937
转载 Uboot移植TQ2440之NOR驱动之一
弄了三天的TQ2440 NOR Flash今天尘埃落定.兼职是简直是煎熬啊.找了很多的 问题.最后到一一解决.移植Flash 驱动关键是 驱动函数的理解.虽然移植成功了.但是还是向我的站长要的驱动函数.NOR Flash的版本是EON29LV160AB 2M现在总结一下经验:1:修改root@localhost olduboot]# cd include/confi
2013-01-22 22:55:38 556
转载 U-boot-2009.03移植之十四:支持norflash启动
1:norflash 和 nandflash 兼容启动,自动识别2:对于nandflash的读写和擦出操作,因为目前把在内存中运行这的内核烧写到nand还不成功针对这两个问题做一些研究,今天解决了第一个问题,特记录一下。首先,关于uboot如何自动识别norflash和nandflash的方法,参看我转的另一篇博文《在U-boot下实现自动识别启动Flash的原理(针对S3C24x
2013-01-22 22:46:44 581
转载 编写uboot下Nor Flash驱动的注意事项
【Nor Flash中的一些术语】-1. Bottom/Top Boot Sect(底部/顶部 启动块)所谓的boot sect,是指的是Nor Flash和Nand Flash不太一样。Nand Flash从开始到最后,都是由同样大小的page所组成的。而Nor Flash,一般都是有个boot sect,好像是由于历史原因,常将Nor Flash用于作为存储启动代码的设备,
2013-01-22 22:27:10 718
转载 向Flash中烧写uboot和linux操作系统
向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ================================================================================ from:http://www.diybl.com/course/6_system/
2013-01-22 22:23:30 1150
转载 uboot命令大全
Printenv 打印环境变量。Uboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5Environment size: 80/8188 bytesSetenv 设置新的变量Uboot> setenv myboard AT9
2013-01-22 22:20:32 561
转载 uboot部分命令使用心得
1.用help可以查看当前uboot支持的命令默认的,输入help,可以查看到目前uboot支持的所有所有命令的名称和简单的解释,比如:# help? - alias for 'help'asdebug - AS3536 debug shellbase - print or set address offsetbdinfo - print Board In
2013-01-22 17:38:18 1000
转载 cvs tag 与 rtag, tag 与 branch区别
2. Branches2.1 Creating a Branch Branches can be added to the repository tree in order to allow different development paths to be tried, or to add parallel development of code
2013-01-22 12:22:03 1687
转载 CVS命令深入研究
环境:Windows server 2003 sp1简体中文版cvsnt-2.5.03.2260.msi目录:一、CVS命令整体结构二、CVS帮助察看方法概述三、CVS选项四、CVS命令五、CVS命令缩写六、CVS命令详解七、CVS实践======================================================一、CV
2013-01-22 12:18:41 642
转载 FSL Imx53 启动流程分析(1) --上电启动
IMx53上电后,进入的是其内部的Memory,从iMx53RM.pdf Chapter 2中可以查看到System Memory Map图如下: 从片内地址的0x0000_0000至0x0000_FFFF这64K是Boot Rom的空间,其固化有Boot Code。IMx53在硬件复位后会强制Arm内核从Boot Rom启动,运行Boot Code。 Boot
2013-01-22 12:01:56 964
转载 DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)
首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。 DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格
2013-01-16 12:24:32 30004 6
转载 DDR3内存技术原理
随着AMD AM2平台CPU的上市,目前两大处理器巨头均提供了对DDR2内存的支持。不过,DDR2远不是内存技术发展的终点,CPU和内存厂商已经在着手进行DDR3内存的相应准备。DDR2内存的好日子还没过上几天,它的下一代产品DDR3又成为了人们关注的对象。 DDR3内存已经面世 在本届Computex 2006台北展会上,威刚科技向人们展示了新一代的DDR3内存。威
2013-01-16 12:18:59 3192
转载 Ubuntu设置环境变量
添加环境变量:方法一:$ vi ~/.bashrc在最后一行添加PATH=$PATH:/my_new_path:$source ~/.bashrc方法二:注意:修改环境变量PATH。具体:修改/etc/bash.bashrc文件(所有用户都可用)$sudo vim /etc/bash.bashrc在文件末尾添加:export PATH=$PATH:/my_new
2013-01-09 12:23:52 609
I2C总线芯片AT24C02程序设计(精简版)
2010-12-21
18B20温度传感器应用解析(中)
2010-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人