自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (25)
  • 收藏
  • 关注

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 启动

我们知道 s5pv210启动方式有很多种,sd卡和nand flash 启动就是其中的两种,前面我们实现的都是基于sd卡启动,这节我们开始实现从nand flash 启动:      从 NAND 启动 u-boot,需要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存。这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-

2014-07-29 07:37:22 1158 3

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 8位硬件ECC

这节我们实现nand的ecc,保存环境变量到nand flash 中。然后把我们之前的led灯烧写到nand flash 中,开机启动,在 tiny210.h 中定义宏 CONFIG_S5PV210_NAND_HWECC、CONFIG_SYS_NAND_ECCSIZE、CONFIG_SYS_NAND_ECCBYTESCONFIG_SYS_NAND_ECCSIZE 定义了消息长度

2014-07-29 07:33:38 1095

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND添加分区

这里的分区只是为了操作的方便。假设有个分区 kernel,其地址区间为 0x20000~0x320000,其大小为 0x300000在没有分区的情况下,对这块区间的操作如下:nand erase 20000 300000        擦除操作nand write 20000000 20000 300000    写操作nand read 20000000 20000 300000

2014-07-28 14:55:39 750

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植NAND FLASH

这节我们开始移植nand flash:通过查看帮助文档 doc/README.nand,要支持 NAND,需要配置CONFIG_CMD_NAND我们修改 tiny210.h,把 CONFIG_CMD_ONENAND 屏蔽掉,同时加上CONFIG_CMD_NAND:编译出错 ,没有定义 CONFIG_SYS_MAX_NAND_DEVICE,最大 NAND 设备数,我们的板子只有

2014-07-28 14:55:00 823

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植网卡

tiny210 板载的网卡芯片是 DM9000A,接在 S5PV210 的 SROM 控制器的 BANK1 上:S5PV210 的 SROM 控制器支持 8/16 位  NOR  Flash/PROM/SRAM 内存。分为 6 个 bank,每个 bank 寻址空间达 128MB。每个 bank 有一个片选信号 nGCS[5:0],用来选通外接的内存芯片。当发的地址在bank1

2014-07-28 14:54:10 977

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——命令补全和历史命令

我们知道 Linux 的 shell 支持按 Tab 键自动补全命令,以及历史命令。 使用非常方便,我们也想让 u-boot支持这些功能:让 u-boot shell 支持 tab、命令历史-jdzwl-ChinaUnix 博客”一文有说明,需要配置 2 个宏CONFIG_CMDLINE_EDITING 和 CONFIG_AUTO_COMPLETE,我们在 tiny210.h 中增加这 2

2014-07-28 14:53:12 728

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(打印串口控制台)

在之前我们移植的代码中,都没看到明显的效果,这节我们实现控制台的打印信息。在上节,我们看到调用 relocate_code 重定位。在 u-boot 的帮助文档 doc/README.arm-relocation 中对重定位有说明。u-boot 为了生成位置无关码,在链接时指定了-pie 选项,这个选项在 u-boot-2014.04/arch/arm/config.mk 中指定:

2014-07-28 14:51:48 851

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(修改显示信息)

我们平时在使用u-boot时 ,u-boot启动会打印一些基本信息,比如说cpu型号、内存大小、时钟等信息,我们这节实现这些信息。现在接着上节继续分析:      在设置堆栈指针之后,接着调用 board.c 中的 board_init_f 函数,给它传了一个参数 r0=0,事实上没有用到。这个函数使用到了一些全局变量,因此我们需要让 u-boot.bin 位于其链接地址,通过修改 tin

2014-07-28 14:50:42 868

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot.bin(内存布局)

这节我们完成内存的初始化: 我们在 u-boot-2014.04/board/samsung/tiny210/tiny210.c 中实现它, 由于这个函数只需要在 u-boot-spl.bin 中实现,而 u-boot.bin 不需要,同时 smdkv210.c中的其他函数只需要在 u-boot.bin 中实现,前面分析过,编译 u-boot-spl.bin 时,spl/Makefile 会导出一

2014-07-28 14:48:06 754

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(点亮led灯)

在前面我们已经成功的实现了u-boot-spl.bin 现在开始我们要移植重头戏: u-boot.bin了,同样开始之前我们先进行分析:      同样u-boot.bin 也是从 start.S 中的 reset 开始执行,执行一些 CPU 底层初始化,然后跳转到 crt0.S 中的_main函数。_main开始是设置堆栈,在u-boot-spl.bin中,因为比较小,我们默认用bl

2014-07-28 14:47:18 1386

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(内存初始化)

在这节,我们要完成u-boot-spl.bin移植,并且通过这个程序,拷贝我们自己写的一个led程序到内存,让led灯点亮,首先我们回顾一下u-boot-spl.bin的整个运行过程:          1. 运行 arch/arm/cpu/armv7/start.S 文件,设置异常向量表,关闭中断,设置处理器到svc模式,然后执行                          cup

2014-07-28 14:46:25 1008

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(时钟初始化)

前几节记录的都是一些准备知识。现在我们开始正在的移植了 。      首先我们解压下载好的u-boot源码,在 u-boot 的帮助文档 README 中有介绍如何添加自己的单板:1)  首先在顶层目录下的 boards.cfg 中添加自己的单板的硬件配置信息,但是我们拿到代码,先make distclean 一下。我们仿照 smdkc1002)

2014-07-28 14:45:49 971

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植u-boot-spl.bin(核心初始化)

什么是SPL? SPL 的全称为 secondary program loader,我们知道,S5PV210 启动过程需要 BL1,BL2,其中 BL1 进行一些基本初始化(时钟、内存) ,加载BL2 到内存。U-boot 为此专门实现了 SPL 框架,看下面这幅图就清楚了:     SPL即第 2 阶段程序加载器,即我们要实现的 BL1。   要支持 SPL, 我

2014-07-28 14:45:15 992 1

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植开始

移植 u-boot-spl.bin,我们采用 SPL 方式,因此需要在单板配置文件 u-boot-2014.04/include/configs/tiny210.h 中添加宏:     我们可以进行如下操作,只编译 u-boot-spl.bin,这里没有在命令行指定交叉编译器,因为我已经在 Makefile 里添加了工具链:       但是编译出错,我们前

2014-07-28 14:44:46 881

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——SPL

这里引入一个 Makefile 的知识点,GUN make 的执行过程分为两个阶段:      第一阶段:读取所有的 makefile 文件(包括“MAKIFILES”变量指定的、指示符“include”指定的、以及命令行选项“-f(--file)”指定的 makefile 文件),内建所有的变量、明确规则和隐含规则,并建立所有目标和依赖之间的依赖关系结构链表。      第二阶段

2014-07-28 14:44:33 991 1

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——编译过程

关于 u-boot 中的命令的使用,大家可以百度“uboot 命令详解”,或者查看 u-boot 的帮助文档。      注意:所有修改或添加的代码都标注有“add by shl”或者“modied by shl” ,这样方便查看。      首先大致分析一下 u-boot 的代码走向,通过看链接脚本 u-boot-2014.04/arch/arm/cpu/u-boot.lds

2014-07-28 14:44:04 860

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(三)

这节我们换种方法分析,从重点开始,也把我们前面分析的关联起来。还记得README 吧,在 README 中 Software Configuration 一节有详细说明,README 告诉我们:要针对某个单板进行配置,需要执行:make NAME_config,其中 NAME 在 boards.cfg 中列出。S5PV210 和 S5PC100 都是 Cortex-A8 架构,比较类似,我以

2014-07-28 14:43:56 933

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(二)

上节我们分析到第149-1390行,由于比较长,我们这节继续分析。这是一个条件语句,我们拆分分析:(第153-158行)[cpp] view plaincopyPHONY += all  ifeq ($(KBUILD_EXTMOD),)  _all: all  else  _all: modules  endif  

2014-07-28 14:43:04 721

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(一)

刚开拿到u-boot源码,我首先想到看的是readme文件,但这个文件很长且我英文水平有限,只能大概的了解他的意思:介绍了 u-boot 的历史, 版本命名规则, 目录组织架构,软件配置,如何添加一个新的板子等。对于linux下的工程,编译配置的开始肯定是根目录下的makefile , 但对于makefile我也只是了解基本的知识,所以开始之前,我又去恶补了一下makfile相关的知识,下面的分析

2014-07-28 14:42:04 1097

转载 tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——前言

刚开始学嵌入式Linux,看到uboot时,对它产生了很强的兴趣,刚好手中有块tiny210的板子,很想尝试移植一下,之前也尝试过移植,但不成功,经过一段时间的学习,加上找到的一些参考资料,决定趁这个暑假尝试一下uboot的移植,于是想把中间的移植的过程记录下来,并想尽可能的详细,供以后参考,同时希望得到大家的指导,希望中间的错误大家能指出,共同进步:      很多 u-boot 的基础

2014-07-28 14:40:54 842

转载 (七)u-boot2013.01.01 for s5pv210:《u-boot启动流程》

转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/98240351.关于启动流程1.1 启动阶段分为3个,bl0,bl1,bl2。下面只是就功能方面对它们做说明,实际设计的时候,也许会对其具体功能做出调整,也就是说,这几个阶段的划分是就功能而言的,不能看得太死。      bl0:出厂的时候就固化在irom中一段

2014-07-26 16:06:05 969 1

转载 (五)u-boot2013.01.01 for s5pv210:《移植前的准备及u-boot初编译》

转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9329051移植前的准备       移植前,要做的事情是搭建开发环境以及对U-boot源码的获取。首先说一下开发环境:1.此次U-boot移植的硬件平台是天嵌的TQ210开发板:       CPU:板载核心是S5PV210(CortexA

2014-07-26 16:03:20 829

转载 (四)u-boot2013.01.01 for s5pv210:《mkconfig分析》

转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9312719         config.mk主要功能是配置单板信息和编译环境,将会被u-boot的makefile所调用,本文仍然侧重于句法分析。[cpp] view plaincopy####

2014-07-26 15:58:45 792

转载 (三)u-boot2013.01.01 for s5pv210:《mkconfig分析》

转载地址:http://blog.csdn.net/zsy2020314/article/details/9312147[cpp] view plaincopy/* 和分析makefile一样,分析mkconfig同样注重句法分析 */  ############################################

2014-07-26 15:54:17 828

转载 (二)u-boot2013.01.01 for s5pv210:《Makefile分析》

当时写的时候看的是2012-10版本的,但是略对比了一遍和2013.01.01没什么改动,所以这不影响对2013.01.01版本的makefile的理解。本文比较侧重于语法句意的分析,框架性的原理网上已经有很多,makefile在变但原理始终不变,只要理解了其中一个版本,对于其他版本的理解来说就应该不存在问题了。[cpp] view plaincopy

2014-07-26 15:48:59 952

转载 (一)u-boot2013.01.01 for s5pv210:《Uboot简介》

转载请注明地址:http://blog.csdn.net/zsy2020314/article/details/9301437

2014-07-26 15:46:46 1079

原创 s5pv210的汇编中断

开发环境:宿主机:

2014-07-18 14:21:48 1602

转载 ARM 汇编指令集

ARM汇编指令集一、 跳转指令    跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调

2014-07-16 18:46:07 892

转载 S5PV210--1---210启动方式和代码前16字节

按照三星《S5PV210_UM_REV1.1》手册上说明的启动流程为:S5PV210上电将从IROM(interal ROM)处执行固化的启动代码,它对时钟等初始化、对启动设备进行判断,并从启动设备中复制BL1(最大16KB)到IRAM(0xd002_0000处,其中0xd002_0010之前的16个字节储存的BL1的校验信息和BL1尺寸)中,并对BL1进行校验,校验OK转入BL1进行执行;首

2014-07-14 10:49:23 1375

转载 printf "%.*s"

小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。#include #include int main(){ char *s

2014-07-11 14:58:18 437

转载 堆和栈的区别(转过无数次的文章)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2014-07-02 20:44:51 469

转载 #define用法

1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2.de

2014-07-02 20:18:06 440

深入理解linux内核(英文)pdf

这是经典的《深入理解linux内核》的英文pdf版本,如果你正在学习或者研究linux内核,希望对你有帮助!

2015-03-10

ldd3英文原版书以及源码

这是ldd3的英文原版书以及相应例程的源码,希望对正在学习linux驱动的朋友们有所帮助

2014-12-31

构建属于自己的AVR操作系统

资源里面包含在AVR上写的简单的操作系统,以及相应的程序,希望对需要的朋友有所帮助

2014-12-29

汇编s5pv210中断

上传的资源是用汇编实现的s5pv210的外部中断的程序,开发板是:友善的tiny210.如果你正在学习arm汇编,希望对你有所帮助!

2014-07-18

uboot的start.s文件解释

这是一个介绍uboot的start.s函数的文档,写的相当详细,如果你正在从事相关的工作或者相应的学习,你可以参考参考,希望对你有所帮助!

2014-07-15

ARM体系结构与编程pdf

这是一本讲解arm的体系结构的书,如果你从事相关的学习或者开发,这本书会给你带来很大的帮助

2014-07-14

串口调试助手

这是一款很经典的串口调试助手,作者是“聂小猛-丁丁”,自己一直在用,希望对大家有用!

2014-05-16

usb-monitor7.12

这是一款usb监控的软件,版本是usb-monitor7.12,压缩包里有破解及破解的说明,我的电脑上是win7的32的系统,用起来是好使的,其他的系统没有做测试,希望对正在学习usb的朋友一点帮助!

2014-05-16

win7的超级终端

这是一款win7的超级终端,许多人在win7开发嵌入式时可能碰到没有超级终端的问题,这是一款不错的,我自己在win32位下使用正常,win7没有测试

2014-03-27

smart210-leds.c

这是友善smart210核心板上的四个led的驱动程序,这里贴出来这是为了大家方便查看

2014-02-22

Android-jni-test for smart210-led

这是我自己写的通过JNI调用Linux内核中的驱动程序来完成Android上层应用程序的代码,硬件开发平台式友善的smart210,在他家自带的系统上直接做的应用程序,希望对大家有用

2014-02-22

Visual+C++6.0

这是一款VC++6.0的软件,只有三十多M,对于学习和验证c很方便,当然要是专业开发的人员就不太实用了,不管怎么说,都希望能给大家带来方便!

2013-09-28

S5PV210的数据手册

这是三星S5PV210的数据手册,在网上不是很容易找,这里给大家共享一下,希望对大家有用!

2013-09-16

tftp服务器安装包

这是在linux下建立tftp服务器的三个安装包,通过安装这三个包,就能建立tftp服务器

2013-09-01

友善mkimage

编译linux操作系统时,需要的文件,如果没有这个文件,编译的时候会出现错误,所以提供给大家

2013-09-01

tiny210-u-boot

这是友善tiny210开发板的u-boot,里面包含两个文件,u-boot的源代码和直接烧写的.bin文件

2013-09-01

友善eeprom测试程序

此源程序是友善之臂提供的eeprom在linux上层的测试程序

2013-08-03

空空如也

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

TA关注的人

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