
ARM11(S3C6410)
文章平均质量分 71
cp1300
电子爱好者
展开
-
(第一天)S3C6410点亮一个LED
今天开始学习ARM11,使用的是飞凌的OK6410A开发板. 平台信息:采用的是三星的S3C6410,板载256MB DDR,2G NAND.Win7 32bitRVDS 2.2 1.像以前学习51时一样,首先点亮一个LED.这是启动文件,最简单的,就声明一个代码段,跳转到main函数.因为是刚刚学习,因此暂时不去深究. 2.主要的代码,就一个延时函数,一个LED IO初始化函数,一个主函数...原创 2012-02-19 09:23:27 · 4632 阅读 · 7 评论 -
RVDS4.0安装
今天上午下载了RVDS4.0并安装破解成功了,还建立了一个裸机工程,使用AXD下载仿真成功了,RVDS4.0是基于eclipse的,但是比eclipse启动稍快一点,在WIN7下兼容等非常好,除了调试不方便外,强烈建议使用RVDS4.0,抛弃垃圾的RVDS2.2,折磨人. 1.下载地址,电驴资源,可使用迅雷下载,使用虚拟光驱打开或者直接用WINRAR解压安装,注意不要与RVDS2.2原创 2012-07-22 15:48:52 · 34232 阅读 · 62 评论 -
【嵌入式linux】(第四步):安装NFS服务,并挂载到开发板
1.前言 由于嵌入式linux开发大多数使用的是交叉编译环境,难免很频繁的将文件在开发板和PC环境之间传递,最方便的当然是网络传递了,可以使用FTP,以及挂载NFS两种方式了,显然后者更为方便了。2.NFS服务安装 Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序: sudo apt-get insta原创 2012-12-05 23:28:58 · 15682 阅读 · 3 评论 -
【嵌入式linux】(第三步):安装串口终端 (ubuntu安装minicom串口终端)
1.前言 我使用的是USB转串口,芯片是PL2303,貌似ubuntu自带了PL2303的USB驱动,可以直接使用,其它的USB转串口的没试过。2.minicom安装 在终端中输入 : sudo apt-get install minicom 按提示下载并安装minicom, 下载安装完成后使用命令启动minicom,在终端中输入:sudo minicom 即可启动原创 2012-12-05 21:19:46 · 8361 阅读 · 0 评论 -
OK6410 裸机BMP图片解码
主要在之前的解码的基础上面添加了图片缩放功能。大家可以看看BMP解码过程或者思路。资料网上非常多,在此就不在说明,直接上代码。BMPdecode.c/*************************************************************************************************************原创 2012-12-09 17:36:58 · 3134 阅读 · 1 评论 -
RVDS2.2安装出现Error: environment variable PATH is over 1K characters的解决方法
最近装了64位的win7,安装RVDS2.2出现Error: environment variable PATH is over 1K characters Please use the armenv tool to set up your environment before using this product. The armenv tool is documented in原创 2012-12-24 20:08:34 · 5693 阅读 · 12 评论 -
OK6410汇编程序练习
尝试使用一下6410的汇编,发现跟当年的51差不多,一步一步的学习 ;*************************************************************************************************************;* 文件名: ok6410.s;* 功能: S3C6410 汇编;* 作者: cp13原创 2013-01-04 21:32:41 · 2438 阅读 · 0 评论 -
S3C6410 裸机硬件JPEG解码
2012年12月25日,晚上我找到问题所在了,JPEG解码源图像地址必须是16字节(128位)对齐的,也就是最低4位必须为0,这个害的我好久,还好终于解决了。修复了已知的bug;这个是我实验用的原图,用工具把他变成了数组后直接放在程序里面了.解码后的图片附上代码/**************************************原创 2012-09-22 17:15:33 · 4669 阅读 · 6 评论 -
S3C6410 硬件JPEG解码无关代码影响解码问题终于得以解决
早在今年8月份的时候就将jpeg解码弄好了,但是一直以来非常的不稳定,如果修改了任意地方的代码都会造成解码可能失败,起初我以为是堆栈问题,或者后面有非法指针,但是都没得到结果,最后让我只能怀疑编译器了,而且我同样的程序使用了RVDS4.0编译后JPEG解码老是等待超时,但是可以解码头部,得到相关的JPEG信息,就是无法解码图片主体部分,我换到RVDS2.2上面竟然解码成功了,同样的程序,不同的编译原创 2012-12-26 20:40:45 · 2026 阅读 · 0 评论 -
S3C6410 裸机DMA
/************************************************************************************************************* * 文件名: dma.c * 功能: S3C6410 DMA底层驱动函数 * 作者: cp1300@139.com * 创建时间: 2013年01月23日21:06原创 2013-02-23 13:24:42 · 3834 阅读 · 8 评论 -
S3C6410裸机定时器
定时器我主要用来延时和获取程序运行时间./************************************************************************************************************* * 文件名: timer.c * 功能: S3C6410 timer底层驱动函数 * 作者: cp1300@139原创 2013-03-30 07:24:28 · 2465 阅读 · 2 评论 -
标准C堆初始化,RVDS4.0+6410初始化C堆malloc
标准C堆初始化,RVDS4.0+6410初始化C堆malloc之前试了很多次使用汇编初始化堆的方法,在KEIL上面可以,但是在RVDS4.0上面一直没有成功,今天找到了一种直接在C中初始化堆的方法.首先汇编入口不做任何处理;------------------------------------------------------------------原创 2013-04-06 16:53:25 · 3282 阅读 · 0 评论 -
【转】mini2440裸机开启MMU实验
【转】mini2440裸机开启MMU实验.text.global _start_start: ldr sp, =4096 @ 设置栈指针,以下都是C函数,调用前需要设好栈 bl disable_watch_dog @ 关闭WATCHDOG,否则CPU会不断重启 bl mem转载 2013-04-10 07:08:54 · 2349 阅读 · 0 评论 -
S3C6410裸机RTC实时时钟
相对于STM32,6410的RTC是相当的简单./************************************************************************************************************* * 文件名: RTC.c * 功能: S3C6410 RTC底层驱动函数 * 作者: cp1300@原创 2013-05-10 07:10:28 · 2157 阅读 · 0 评论 -
RVDS4.0 + openJTAG 裸机调试
上个月买了一个openJTAG一直没时间使用,今天用了一下,还行,给大家分享一下RVDS4.0与openJTAG的使用方法首先得安装好openJTAG的相关驱动以及GDB调试软件,这个在openJTAG的使用手册上面都有,这里就不多说了,来看看RVDS4.0的设置吧只有一个.s文件,是汇编写的,用来测试无uboot环境下的启动的,其它编译设置请看我的博文,RVDS4.0原创 2012-11-08 21:35:05 · 12864 阅读 · 34 评论 -
S3C6410裸机SD卡驱动(SDIO模式)
花了几天写了SD卡裸机驱动,现在还不完善,只支持4G以内的卡,以后再加上;现在经过修改可以写入数据了,亲测没问题.S3C6410_SDIO.C#include "s3c6410_system.h"#include "s3c6410_sdio.h"////////////////////////////////////////////////////////////////原创 2012-07-06 07:06:18 · 10412 阅读 · 15 评论 -
S3C6410 纯粹的裸机启动,自己写的SD BOOT启动
这几天晚上一直折腾S3C6410的裸机SD卡启动,不大想使用UBOOT,我是搞硬件的,对底层非常感兴趣,不喜欢已经写好的,因此自己一直在尝试,其实很早之前就试过SD卡启动,也就是ARM11上电后会把SD卡倒数第9KB开始的8KB(倒数0x2400B偏移量)复制到内部SRAM中执行,这个比较简单,但是代码量只有8K,不能像STM32一样玩,因此查阅相关资料,得知启动方式为L0加载L1,L1加载L2,原创 2013-12-10 23:22:51 · 6573 阅读 · 4 评论 -
RVDS4.0建立工程
1.打开RVDS4.0选择工程目录,建议不要使用中文路径. 2.点击右边的那个图标进入工程界面.3.点击那个箭头选择RealView Project开始新建工程.4.填写工程名称,5.点击NEXT到下面这个界面,选择CPU,Bare ARM Cores-> ARM1176JZF-S6.选择浮点协处理器,原创 2012-07-22 17:04:28 · 13050 阅读 · 33 评论 -
RVDS4.0硬件仿真,同步显示C代码,完全取代RVDS2.2
1.终于RVDS4.0可以完全取代RVDS2.2了,之前因为RVDS4.0在调试上面无法同步显示C代码,因此调试起来不大方便,一直使用AXD进行调试,昨天晚上在网上查了一下,发现GCC里面需要添加-g这个参数才能添加同步调试信息,我就尝试的在RVDS4.0上面试了一下,果真可以,现在和大家分享一下,终于可以完全抛弃古老的RVDS2.2了。2.建议大家使用原创 2012-11-29 09:13:36 · 6398 阅读 · 13 评论 -
S3C6410裸机UART驱动(将printf重定义到串口)
要确保S3C6410已经初始化,一般是使用UBOOT初始化 //串口寄存器//UART0#defineULCON0 *((vu32*)0x7F005000) //UART通道0 行控制寄存器#defineUCON0 *((vu32*)0x7F005004) /原创 2012-02-22 20:35:27 · 5602 阅读 · 4 评论 -
S3C6410裸机中断终于搞定了,不需要汇编 ,使用VIC
经过几天的努力,期间遇到很多的麻烦,终于搞定了S3C6410裸机中断,测试使用的是外部中断0组的PN0,定时器使用的是定时器0. 之前一直很郁闷的是网上的一些S3C6410使用的中断都是像51单片机那样的固定中断向量入口,这种方式不仅需要汇编支持,而且效率相当的低下,既然S3C6410自带有中断处理协处理器VIC,那么我还是建议使用VIC来管理中断. 下面这段话摘自网上,不知道是谁原创 2012-03-11 13:21:37 · 6409 阅读 · 24 评论 -
暂时解决S3C6410无法进行裸机浮点运算
由于之前在函数中插入了浮点运算,导致程序异常,最后查阅相关资料得知S3C6410的浮点协处理器VFP需要初始化,但是我现在也不知道如何使用汇编进行初始化,因此我选择了软件处理浮点运算,但是依然不成功,最后发现问题所在,将内核选择成ARM1176JZF-S后,就算选择了SOFTVFP,软件浮点运算,但是RVDS2.2依然会生成硬件汇编指令,导致CPU出现指令异常,最后我将内核选择为ARM1176JZ原创 2012-03-11 14:15:48 · 2273 阅读 · 1 评论 -
ARM11 (S3C6410) CP15寄存器
关于MMU编程,有几个是要经常查阅的资料。这里我把它整理成一篇文档,因此篇幅太长,节选发上来,全部内容放在附件的PDF当中。 这个文档主要有三个内容 一.协议处器CP15 中寄存器的全部说明. 二.ARM 协处理指令 三.CP15命令列表一.协议处器CP15 中寄存器说明-------------------------------------转载 2012-05-26 19:02:36 · 3611 阅读 · 2 评论 -
使能S3C6410的VFP,浮点协处理器
之前一直不知道如何使能硬件协处理器,刚刚在网上找到了方法,配置好RVDS,选择相应的内核,选择硬件VFP在初始化代码中加入VFPEnable EQU (0x40000000) ;VFP使能设置;--------------------------原创 2012-05-26 18:58:26 · 3447 阅读 · 5 评论 -
arm mmu地址重映射
一、映像文件基本组成映像文件加载时域包括RO和RW段,运行时域则包括RO、RW和ZI三个段。其中RO和RW段的内容在加载时和运行时是一样的,只是存储空间可能不同,而ZI段则是运行时由初始化函数创建的。 RO段:Read-Only段,包括源程序中的CODE段,只读数据段(包括变量的初始化值——可以是任意变量,全局/局部、静态/动态变量的初值;还包括数据常量——这个常量也可转载 2012-05-26 21:55:21 · 1709 阅读 · 0 评论 -
OK6410裸机简单的NAND FLASH驱动
OK6410裸机简单的NAND FLASH驱动,只写了个简单的函数,读取一页/************************************************************************************************************* * 文件名: NandFlash.c * 功能: S3C6410 NandFlash底层原创 2012-07-20 22:42:38 · 5874 阅读 · 12 评论 -
printf 的宏定义版本
printf 的宏定义版本前言:我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人转载 2012-07-22 20:54:26 · 18575 阅读 · 10 评论 -
S3C6410 SPI 裸机驱动
刚刚写的SPI驱动,想移植到LINUX上面用来读写SD卡只测试了发送,没有测试接收. spi.c /************************************************************************************************************* * 文件名: spi.c * 功能: S3C6410...原创 2012-10-05 18:20:34 · 7372 阅读 · 23 评论 -
S3C6410裸机电阻屏驱动
使用的是RVDS4.0编译的大家主要是看看如何配置模式的我之前一直使用自动X,Y采样,但是读取的都不准,最后采样分离的,才可以,需要注意的是使能ADC读开始后需要先读转换结果寄存器,但是此时读取的是上一次的转换结果,如果是连续读取需要等待转换完成,否则转换结果不准. adc.c/************************************************原创 2012-08-06 09:38:29 · 4062 阅读 · 7 评论 -
S3C6410裸机AC97驱动
目前能够初始化AC97,能够进入就绪中断,说明能够检测到WM9714,但是无法读取WM9714,不知道哪里出错了,目前正在解决中...AC97.c/************************************************************************************************************* * 文件名:原创 2012-10-09 21:34:03 · 3041 阅读 · 7 评论 -
S3C6410裸机驱动5'TFT LCD
由于OK6410自带的LCD分辨率太低,自己在淘宝上淘了一个5'的TFT LCD,分辨率为800*480今天上午终于驱动起来了,遗憾的是OK6410的转接板竟然将部分RGB数据线接在一起,导致只能支持16BIT的颜色.下面是我的液晶屏的时序资料//代码//TFT_LCD.C/****************************************原创 2012-05-06 14:19:07 · 8359 阅读 · 43 评论 -
S3C6410裸机程序相关系统函数
裸机程序中可能用到的文件以及函数//system.c/************************************************************************************************************* * 文件名: system.c * 功能: S3C6410相关系统函数 * 作者: cp1300@1原创 2012-10-16 21:43:22 · 3520 阅读 · 2 评论 -
S3C6410图形旋转裸机驱动
这个比较简单,一次成功,没遇到任何问题.GraphRotation.c/************************************************************************************************************* * 文件名: GraphRotation.c * 功能: S3C6410 图形原创 2012-10-16 21:38:50 · 2093 阅读 · 0 评论 -
OK6410开发板裸机DS18B20驱动
相信玩过51的童鞋应该都玩过DS18B20吧,虽然用在ARM11上面,但是操作还是一样,多了一点就是读写IO前需要切换IO方向,其实51在读取之前需要切换到高电平的,这个一般由编译器完成的,/************************************************************************************************原创 2012-09-18 20:10:29 · 3299 阅读 · 4 评论 -
DS-5/RVDS4.0出现变量初始化错误
最近调试的时候老是出现各种错误,一般都是内存错误,我无意间发现所有的全局变量出现问题,就是声明全局变量后,赋值的初值出现错误.初值明明是0x12345674,最后变为了0xBA141234,出现了移位想象测试代码//内存测试,防止出现内存异常,主要表现为全局变量初始化有问题#define MEM_TEST 0x12345678u32 MemTest = MEM_TEST; _i原创 2014-06-21 22:53:01 · 2563 阅读 · 1 评论