自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (5)
  • 收藏
  • 关注

原创 BSS未清零

问题症状:VIVI命令的的组织是通过链表来实现的,添加命令的方法是如果是第一个命令,那么直接将head_cmd和tail_cmd指向该命令结构体,如果不是添加第一个命令,那么使tail_cmd的next_cmd项指向该命令结构体,然后再将tail_cmd指向该命令结构体。在初始化链表的时候,head_cmd=tail_cmd两个命令结构体指针都为NULL;然后添加第一个命令的时候,查看这两个指针却

2011-05-28 15:15:00 861

原创 clock tick rate异常

错误信息:Can not get a clock tick rateCan not get a clock tick rateCan not get a clock tick rate 原因:根据错误信息来看是节拍器上的问题,单步追踪最后发现是在计算节拍率的时候导致的。节拍率计算的过程中需要用到PCLK,PRESCALE和DIVIDER。2410和2440在得到PCLK的分

2011-05-28 14:50:00 935

转载 arm-none-linux-gnueabi vs arm-linux – EABI vs Non-EABI

EABI is the new Application Binary Interface (ABI) specification for the ARM Architecture introduced in 2005. It aims to provide interoperability between binaries compiled by various compilers like co

2011-05-06 15:28:00 1003

原创 启动问题 NAND擦写问题

iar_  问题现象1:程序进行连接设置的时候,只能设置很小的范围,查看MAP文件,以及可执行文件大小,整个程序在4K范围内,由于这个凡是在是STEPPING STONE中,所以烧写进NAND,跑起来没有问题。 尝试将RW和ZI段放在SDRAM地址进行连接,烧写到NAND,没有反应。用JTAG查看寄存器信息,看出一些端倪,初始化硬件的代码并没有起作用,可能有2种情况:跑到这些代码了,但是有问题

2011-04-26 00:31:00 1231

转载 ARM编译器的semihosting

Semihosted环境(semihosting是针对ARM目标机的一种机制,它能够根据应用程序代码的输入/输出请求,与运行有调试功能的主机通讯。这种技术允许主机为通常没有输入和输出功能的目标硬件提供主机资源)在semlhosted环境下用来实现C库函数与目标相关的函数。可以在你的Application Code中使用printf等stand IO Function in C Libr

2011-04-03 13:09:00 9332

原创 第2阶段

main.c粗粗看过的,但是并没有象head.S那样分析每一条语句,根据自己的需要真正移植的还是有很多疑惑,主要是每个过程的具体细节怎么实现,比如参数的传递,只知道有有个STRUCT或者TAG可以用,但是具体里面每一个参数,怎么根据自己的系统来设置,放在哪里,怎么传递过去,模模糊糊。现在还是打算仔细看一遍。    按照顺序:       step 1:        reset_han

2011-03-27 22:32:00 1520

原创 vivi中基于NOR FLASH的相关代码

void mem_map_nor(void){    copy_vivi_to_ram();    mem_mapping_linear();    nor_flash_mapping();    nor_flash_remapping();}  static void copy_vivi_to_ram(void){    putstr_hex("Eva

2011-03-13 03:55:00 811

原创 linux参数传递

前几天在看vivi的代码的时候,发现在main.c中设置要传递给LINUX的一些参数的时候是经过一系列的调用使用了para_struct这个结构体进行的,当时一看头文件,并没有发现哪个里面有定义了这个结构体,用source insight来搜索整个VIVI工程同样没有搜索到,事实上这个结构体也是在LINUX内核中定义的。所以一直纠结怎么可以编译通过,而网上看了很久也就一个人提出了这个问题,但是没有

2011-03-11 00:55:00 919

原创 head.S of arch

arch目录下2410中的head.S.    首先include了三个头文件:config.h,linkage.h,machine.h.      其中config.h内容是调用autoconf.h. autoconf是由配置产生的一个配置结果文件,另外一个是.config,两者的区别是语法不同,.config是用来知道Makefile的,所以语法是按照Makefile中的语句定义的,如

2011-03-06 22:26:00 658

原创 NAND FLASH 2440

首先看一下NAND FLASH的组成,总最小的存储单元开始,存储的基本器件是MOSFET,具体怎么存储信息与沟道的形成有关(这在数字电路里面介绍得比较清楚),这个单元可能是SLC或者MLC,区别在于单个单元的存储信息量的不同,实现方式上是通过将电压分为多个档次,这样没个档次可以对应一个信息,比如一共4个档次,那么就可以存储2BITS的信息。然后大一点就是PAGE了,一个PAGE可能有几百或者几K

2011-03-05 03:51:00 1134

原创 UART 2440

首先分析一下UART的组成,4个模块:波特率发生器,接收模块,发送模块,控制模块.    接着看一下UART的功能特性。    1是串行通信,因此需要一定的通信格式,所以这里需要对每个FRAME的格式进行设置,并与通信部件保持一致,包括开始位、数据位、校验位和停止位,这部分在ULCON线形控制器中进行设置。    2是异步通信,时钟信号可以选择,并且设置相应的频率,这在UCON控制器中

2011-03-01 15:11:00 787

原创 sdram 2440

首先是sdram的结构。SDRAM的基本单元是由mos管和电容组成的,其中mos管控制选通,电容控制信息的存储。因此行列选通相当于选通了各自的MOS管。接着是基本的存储单元,它由多个基本单元组成,如通常8个基本单元组成的字节存储单元,或者16个的半字存储单元,这也者也就是DATA ACCESS的位宽。接着是L-BANK,SDRAM内部结构是阵列式的,这样的好处是可以任意访问某个位置的信息,而不需要

2011-02-28 16:44:00 771

原创 arch 1

通过对makefile的分析,对整一个依赖关系有一个大致的了解。接下来准备对每一个模块进行分析。首先看第一个子目录arch。    arch目录是针对不同目标开发板设计的,存放着处理器架构相关的代码,比如可能针对的是s3c2440,s3c2410等,不同的处理器架构有着不一样的硬件模块。而整个vivi启动包括两个部分,第一部分就是完成含依赖于CPU的体系结构硬件初始化的代码,包括禁止中断、初始

2011-02-16 02:12:00 1585

原创 makefile4vivi-top makefile

个人在看VIVI的makefile时的一些认识(部分内容已经被我修改,初步的草稿,还将继续修正):  总MAKEFILE最终目的就是要生成VIVI,所以从生成VIVI的规则开始分析。前面的部分都是在后面规则里面需要用到的定义。#版本信息和体系结构VERSION = 0PATCHLEVEL = 1SUBLEVEL = 4VIVIRELEASE=$(VERSION).$

2011-02-14 18:05:00 960

原创 Linker and loader

倒着来理这个过程。    首先我们明确最终要生成一个可执行文件: .out.  他的最终运行必须包含所有的指令(BINARY)、所有的数据、所有的变量、所有的子函数。    问题1就来了:这些内容在执行件里面有没有什么“区别”对待?        有的。因为关心LINUX下的ELF类型可执行件比较多,这里以它为例来看看。当然对于一个目标文件,可以是可重定位的,也可以是可执行的。

2011-02-12 17:26:00 1506

原创 Makefile_vivi--$$BASH,if -x filename

specify shell:CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; /else if [ -x /bin/bash ]; then echo /bin/bash; /else echo sh; fi ; fi)1、$$BASH 表示BASH完整路径。环境变量指定。2、if [ -x "$$B

2011-02-08 23:29:00 3226

内存技术内幕(SDRAM)

对SDRAM的工作原理介绍得非常清楚,虽然介绍思路是以PC为背景的,但是毕竟SDRAM的基本知识是一样的。是做嵌入式非常有用的一份参考资料。

2011-02-24

Linkers and Loaders

我们需要弄清楚LINKER的运行机理,将对移植工作很有帮助.

2011-01-25

S3C2440各寄存器地址定义(很全)

我们在做开发的时候,经常需要涉及到ARM中具体的寄存器地址,翻阅DATASHEET.这份资料是对S3C2440各寄存器地址的罗列,作者应该花了不少功夫,方便我们在需要某个寄存器地址的时候,比较快速的知道.

2011-01-23

ARM经典300问与答

对于ARM初学者来说,这些也许就是你困惑着的小问题.这份资料是对常见的一些小问题的罗列,看了有个印象,万一遇到类似的问题可以参考.

2011-01-23

Bootloader Description

以前在一个网站上看到的一份写得不错的资料,对BOOTLOADER的框架和设计思路进行了很好的介绍,希望对学习嵌入式LINUX的同行有帮助.

2011-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除