![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
2440裸机编程
文章平均质量分 58
yimu13
这个作者很懒,什么都没留下…
展开
-
嵌入式学习路线
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定) (3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切 入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。(2)与企业计算等应用软件不同,嵌入式转载 2010-06-30 18:03:00 · 1648 阅读 · 0 评论 -
裸机系列——DMA工作
<br />转至:http://blog.csdn.net/cybertan/archive/2009/10/19/4697516.aspx<br />DMA优点是其进行数据传输时不需要CPU的干涉,可以大大提高CPU的工作效率。<br />DMA大容量数据传输中非常重要,比如图像数据传输,SD卡数据传输,USB数据传输等等。<br />S3C2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同。<br />那么怎么使用DMA呢,S3C2410内部集成了DMA控制转载 2011-04-17 15:52:00 · 1038 阅读 · 0 评论 -
裸机系列——DMA寄存器
<br />转至:<br />http://blog.csdn.net/dhdahai/archive/2009/03/30/4037420.aspx<br />2440 DMA寄存器:<br />1. DISRCn(DMA initial source c):始端数据基地址。<br />2. DISRCCn(DMA initial source controlregister):始端总线类型(系统总线AHB or 外围总线 APB)和地址类型(increment转载 2011-04-17 09:42:00 · 1079 阅读 · 0 评论 -
uart dma实现方式分析
<br />转载地址:http://blog.csdn.net/yinkaizhong/archive/2009/02/25/3936055.aspx<br />在做uart DMA驱动期间,前后加起来也有1个月左右的时间,总的来说比较全面的了解了uart,DMA的工作原理。<br />在调试中,遇到了最大问题就是关于DMA操作这快的不熟悉,导致浪费了很多的时间和精力。对UART,DMA的工作原理可以看LDD3,或者设备驱动一书中也有<br />详细介绍,uart-dma驱动的移植可以参好drive转载 2011-04-22 09:46:00 · 3857 阅读 · 0 评论 -
裸机系列——DMA总结
<br />弄了好几天的DMA终于是成功了,只是成功了一小步,还要继续改善,为什么配置几个DMA寄存器这么难了,还要好好想想为什么?先记录一下,2011-04-21 10:31:54又过了一天,现在的我还是不是很明白一些问题,可能是知识面的限制还是什么知识是我不熟悉的。首先一开始我从UART传到内存中,但是一直到现在都没解决的问题就在这里了,那就是一个关于DMA传输的物理地址的问题,首先由于C语言的不熟悉导致我对ARM中地址的定义都变成了很迷糊的。在另一篇文章中将分析#define rUTXH0 (*(原创 2011-04-22 21:30:00 · 1542 阅读 · 2 评论 -
裸机系列——nandflash
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Style原创 2011-06-15 16:53:00 · 1058 阅读 · 0 评论 -
C语言优先级的问题
if((rIISCON & (1一个C语言优先级的问题导致我弄了好几天的程序,以后一定要坚信一个小小的C语言错误都会导致你程序无法运行,一定不要小看这个好像不起眼的错误,他们会让你付出代价的,正想现在我经历的一样,一个==运算符和一个位运算&的优先级别的错误使我修改了好几天的程序,当然遇到问题去解觉的过程会使你得到收获,得到的收获是我这几天反复的看手册,了解IIS总线,L3总线,IIS时钟,我错误的认为是我对IIS的不熟悉,或者对时钟设置的错误,经过这几天的经历使我多明白了一些有关IIS的知识,这原创 2011-05-07 11:20:00 · 914 阅读 · 0 评论 -
裸机系列——supervivi烧写
<br />今天同学不小心把我的nor flash给擦除了,下载程序的菜单不见了,我重新找出国嵌视频看supervivi烧写一节,我看了好几篇,完全按照上面弄的,可是总是烧写不成功,出现PC of target system has unexpected value after erasing sector的错误,上网搜索了好久也得不到解决,后面在群里面问了才知道是配置文件的问题,需要一个配置文件来配置一下J-link就好了。后面烧写好supervivi后出现和以前不一样的情况,估计是开始烧写总是不成原创 2011-05-07 21:25:00 · 1895 阅读 · 0 评论 -
裸机系列——IIS放音
<br />裸机编程的IIS程序,赵老师已经写的很是明白了,他的博客地址<br />http://blog.csdn.net/zhaocj/archive/2010/05/08/5570424.aspx<br />所以这里我自己也不写关于IIS的一些原理了,我想自己总结一下自己编写IIS程序中间的心得和问题。<br />首先对于IIS编程,要明白三个重点<br />1. IIS总线,对于IIS总线2440来说有五根线,分别是IISSCLK IISLRCLK CDCLK IISDI IISDO ,其中后面俩跟原创 2011-05-08 10:11:00 · 1710 阅读 · 0 评论 -
汉字编码问题
汉字编码问题(转) 摘自http://www.cnblogs.com/gaowg/articles/1101542.html由于常常要和汉字处理打交道,因此,我常常受到汉字编码问题的困扰。在不断的打击与坚持中,也积累了一点汉字编码方面的经验,想和大家一起分享。一、汉转载 2011-09-04 10:33:48 · 11290 阅读 · 0 评论 -
裸机系列——s3c2440之触摸屏
平台 mini2440触摸屏 索尼x-35 3.5寸触摸屏1.0、触摸屏与lcd触摸屏与lcd是俩个独立的屏在lcd中已经讲过了,但是这里在提一下,主要是涉及到一个触摸屏校正的问题,我以前一直很是不解我手指点的什么东西电脑是怎么知道的,直到我弄原创 2011-09-04 11:42:59 · 2126 阅读 · 1 评论 -
裸机系列--s3c2400之LCD
平台 mini2440编译工具 ads1.2lcd型号 索尼3.5寸TFT液晶屏 开始lcd的驱动是在上个学期末,那时候快要期末了,要准备考试什么的,大概看了一下没看一下的,感觉学习效率原创 2011-09-04 08:21:22 · 2311 阅读 · 2 评论 -
ARM--GPIO端口
s3c2440共有130个GPIO端口,分为9组,GPA ~ GPJ,通过寄存器控制。控制s3c2440的GPIO端口的寄存器有3类,分别是GPxCON、GPxDAT、GPxUP (x=A ~ J):GPxCON:GPIO控制寄存器,可以设置选定GPIO口的输入输出方式和转载 2011-09-05 20:55:09 · 4598 阅读 · 3 评论 -
裸机系列——s3c2440lcd汉字显示
1、lcd裸机写好后在来弄lcd的字符显示就容易多了,理解字符其实就是一副图,比如16*16的汉子显示就是长宽16的一个正方形中用点来显示一个汉字,这样就只有弄清楚哪些点是要显示的就行了,比如第一行要显示一个点我们就可以 xxxxxxxoxxxxxxxx 现在只有把中间的圈显示其原创 2011-09-04 10:22:11 · 3456 阅读 · 0 评论 -
2440的flash、linux、bootloader
开始拿到2440板的时候不知道norflash ,nandflash等等干什么的,还有SDRAM有是什么,还有linux系统装在哪里,怎么装,supervivi有是什么等等很多的问题,今天大概简单的理清楚这里关系。首先分开flash与SDRAM,这俩个其实我们都使用过,fla原创 2011-08-26 11:46:25 · 1487 阅读 · 0 评论 -
裸机系列——2440实时时钟
<br />对于2440的实时时钟操作还是比较简单的,难点的地方在于用设置串口通信来控制时钟时钟的读写设置时间和闹铃。但是用串口控制时钟终将只能用于测试,对于产品的话必然要用到显示器,或者lcd或者数码管,不过现代的时钟更加趋向于用lcd 况且能显示更多的信息。<br /> <br />1. 时钟的数据已经存到寄存器中了,只有读取寄存器的值就可以读出时钟,注意当秒钟为0的时候需要重新读取寄存器的值,这里有个一秒的问题。<br />2.数据的格式为BCD码,用4位二进制表示出十进制数,其本质还是二进制编码。<原创 2011-05-29 16:55:00 · 1331 阅读 · 0 评论 -
裸机系列——IIC
<br />经过一周左右的时间终于是把IIC弄的个差不多了,我只能说对于每一个程序都要认真对待,每个程序的编写都是一种进步。对于IIC,给我的感觉是这个东西单片机的时候也知道,但是没有调出来,现在RAM裸机编程正好好好的学习的一下,但是虽然对于2440的IIC驱动只需要配置好寄存器和把握好时序就可以了,但是我还是经过了很多的一段痛苦的时期,不过现在回想看看,都是一种成长的经历,让人值得骄傲。因为我坚持过来了。好的,说正点的,首先IIC编程依然感谢乐于奉献的赵老师,他的博客地址<br />http://blo原创 2011-05-26 20:23:00 · 1703 阅读 · 7 评论 -
裸机系列——2440串口通信2程序代码
关于一些串口通信的知识已经在上一篇文章中做了总结,这里主要讲程序的问题。首先是直接通信,即不使用FIFO和中断的通信代码#define GLOBAL_CLK 1#include #include #include "def.h"#include "option.h"#include "2440addr.h"#include "2440lib.h"#include "2440slib.h"#include "mmu.h"#include "profile.h"#incl原创 2011-04-04 21:26:00 · 2454 阅读 · 2 评论 -
ARM内存管理(MMU)详解
<br />嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如 FLASH , SRAM , SDRAM , ROM 等,这些不同类型的存储器件速度和宽度等各不相同;在访问存储单元时,可能采取平板式的地址映射机制对其操作,或需要使用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。为适应如此复杂的存储体系要求, ARM 处理器中引入了存储管理单元来管理存储系统。 <br />一 内存管理单元( MMU )概述 <br />在 ARM 存储系统中,使用 MMU 实现虚拟地址到实转载 2010-11-28 10:46:00 · 17899 阅读 · 0 评论 -
一个晶体管管放大电路实验总结
<br />过了有几天了,最近生病了忙着看医生的今天中午总结一下,本来是个挺简单的晶体管单管耦合放大电路,整个实验分三次做,最后的结果是我做失败了,还有一些东西没完成。一个很小的实验却是一个很大的教训。<br />1. 实验前的准备不足,这一点,知道实验后好久才明天,而且这不仅仅是做实验,其他的事情也是一样,开始前的准备一定要充分,永远记住后面的总比前面的困难,只有前面的每一步都做好了才可能完成。实验书上的东西没有很好的预习,相关的知识没有复习,实验的时候遇到问题都不知道该怎么办,临时总是问老师,到处找答案原创 2010-12-12 13:39:00 · 7547 阅读 · 0 评论 -
PC机和ARM开发板的网络连接之telnet和ftp
<br />PC机和ARM开发板的网络连接之telnet和ftp,基于windows xp,ARM板为友善之臂的mini2440学习板。<br />在弄了好久的用户手册后,自己就照着手册上说的做,本来连接起来时比较简单但有些细节没注意到,而且开始对这些网络命令不是很懂,感觉很迷茫很想有人教自己怎么做,但是最后还是靠自己连接好了。首先要总结的是要多看用户手册和数据手册,这些才是完完全全针对你的板子的第一手学习资料,而且一般这些资料讲得都比较详细。其实自己做事要细心,很多时候就差一点点了,但是自己一些小的细节没原创 2010-11-16 21:32:00 · 10795 阅读 · 0 评论 -
mini2440按键中断控制led灯遇到的问题
平台: xp系统,ARM mini2440 程序名:按键中断控制led灯主要学习内容,S3C2440外部中断遇到问题 1. 超级终端下载程序时按下d后又跳回到下载界面,没有等待我下载程序、解决办法:这应该是自己的大意,按下d的时候把键盘上大写控制锁住了,超级终端只能输入小写命令,注意细节。 2. 酓ummy_isr error, interrupt number: 5, INTMSK = 0xffffffdf。下载程序后超级终端显示这句话,网上找了很久没找到很好的解决办法,不过看到有人说好像是MMU没有初始原创 2010-11-19 18:56:00 · 3589 阅读 · 2 评论 -
2440 ADS的配置使用及调试
关于ADS1.2的使用有很多的文档,同时一般也会涉及到AXD调试的一些问题,我前几天因为这些问题而苦恼了好久而且网上搜不到较好的,就是完整的解决办法。我只是讲一些过程,至于原理的东西我也不是很懂所以现在就不多说。我的PC机时xp系统,ARM板mini2440,使用J_link调试。第一. 使用ADS的CodeWarrior编译。使用CodeWarrior编译首先要新建工程,然后新建C后者汇编文件,添加文件要工程,然后要编译的问题了,单独对C和汇编源文件进行编译,然后再使用make连接成一个可执原创 2010-11-18 14:15:00 · 7751 阅读 · 6 评论 -
彻底解决COM端口被占用(在使用中)问题的办法
<br />今天就遇到这个问题了串口调试的时候发现usb转串口使用的是COM8而串口调试助手里面只有COM1到4,我想去该COM口发现COM1到7都在使用中,找了好多办法都不行,后面在网上找到这篇解决办法的文章,就转载过来了,没有标明转载的地址有点不好啊,嘿嘿。<br />彻底解决COM端口被占用(在使用中)问题的办法<br />1. 如何释放被占用的COM口?<br />由于反复试装不同版本的蓝牙驱动,造成COM5~COM15都处在被占用状态,最后成功安装驱动后只能使用COM16了,同步软件还不认,哪位高转载 2010-11-21 15:05:00 · 181745 阅读 · 0 评论 -
简述MMU和虚拟地址
<br />这是一篇非常简练的概括ARM中内存管理器MMU和虚拟地址的简短文章,写的很好,我忍不住收藏它,转载地址如下:<br />http://blog.chinaunix.net/u2/84450/showart_1858502.html<br /> 关于mmu与虚实地址的映射关系的资料很多,经过一段时间的学习,我将mmu以及虚实地址映射关系做一个简短的介绍。 虚实地址的映射关系是通过页表来描述的,而mmu正是通过页表来查找虚地址所对应的物理地址。段比较简单,通过一级页表描述符映射1M地址转载 2010-11-24 20:40:00 · 1934 阅读 · 0 评论 -
volatile关键字
转载 volatile关键字在嵌入式中的详细使用<br /><br />大多数计算机拥有一系列寄存器,其存取速度比计算机主存更快。好的编译程序能进行一种被称为“冗余装入和存储的删去”(redundant load and store removal)的优化,即编译程序会在程序中寻找并删去这样两类代码:一类是可以删去的从内存装入数据的指令,因为相应的数据已经被存放在寄存器中;另一种是可以删去的将数据存入内存的指令,因为相应的数据在再次被改变之前可以一直保留在寄存器中。<br />转载 2011-02-25 20:21:00 · 606 阅读 · 0 评论 -
ARM下裸机开发环境大全
<br />一.什么是裸机开发<br />----------------------------------------------------------------------<br /> <br /> 裸机是一种通俗的讲法,就是指ARM设备上没有任何现成的程序来支持你的开发的软件运行。它是相对设备上有在操作系统的情况运行可执行程序而言的。<br /> <br /> 这两种程序有很大区别。在操作系统环境下,基本上跟桌面程序开发没有太多区别,而裸机程序需要自己初始化硬件环境来运行。转载 2011-03-24 13:03:00 · 3413 阅读 · 0 评论 -
裸机系列——IIS_DMA
<br />s3c2440的IIS总线已经弄了好久,今天大概可以做个总结了吧,最近几天调试IIS弄了人有点疲惫,遇到了很多的问题,但是正是这些问题让我在成长。过多的情绪就不在表现了。进入今天的主题,IIS——DMA总结。<br />问题1、DMA物理地址<br />前面我调试DMA的时候也是调了好几天的DMA的UART通信一直得不到结果,后面上网搜了一些大概的信息,DMA需要传输时需要设置连续的物理地址,同时关于虚拟地址,物理地址,总线地址这些不明白,所以我就把#define buffer ((volat原创 2011-05-15 21:48:00 · 1573 阅读 · 1 评论 -
裸机系列——2440时钟
自己的总结:1.2440有俩个PLL,UPLL 和MPLL。UPLL用于USB时钟UCLK,MPLL对应FCLK .HCLK、PCLK 。ARM启动时直接使用外部晶振作为CPU时钟,对应2440为12Mhz。只有在设置了时钟寄存器M P S三个值,具体的寄存器PLLCON下面已经说得很清楚了。设置分频寄存器后CPU时钟即采用倍频后的FCLK时钟。2. CPU时钟即就是F原创 2011-04-01 09:50:00 · 1494 阅读 · 0 评论 -
裸机系列——GPIO口上拉电阻
<br />GPIO做输出使用时要加上拉电阻,因为默认的是漏极开路,高阻态,无法输出高电平。<br />而在输入时要根据外围电路选择是否设置上拉电阻:<br />在外接电路能提供高低电平时可不加上拉电阻,比如作为第二功能的ADC输入,或作为地址总线时;而且作为ADC输入时若加上上拉电阻,还会影响ADC的测量。<br />当外接电路能不能提供高和低电平时加上拉电阻,比如作为按键输入时,如不加上拉电阻,只能输入低电平,无法输入高电平。转载 2011-04-03 09:36:00 · 1553 阅读 · 1 评论 -
裸机系列——2440串口通信
2011-04-04串口通信还没弄完,等到全部弄完了在一起做一个总结,首先每天先记录一下现在的学习心得。串口调试有几天了,发现串口调试还是比较难的,以后不管是调其他的什么器件都要遵循先容易的把最简单的框架弄好,再一步步的增加功能,一开始我试想一步就把把串口通信弄完,直接写一个基于FIFO的中断串口通信,我承认我失败了,弄了好久没一点结果。弄串口通信还是先写一个不用FIFO的直接用查询的程序,然后再加中断,最后写FIFO的中断程序。今天我写了是不用FIFO的中断程序,有几点要注意的地方。1. 一定要先把手册看原创 2011-04-04 20:26:00 · 3353 阅读 · 1 评论 -
ARM寄存器地址定义——#define rGPBCON (*(volatile unsigned *)0x56000010)
今天学习DMA,需要传递地址,我想从串口传到寄存器来点亮led灯,只是学习一下DMA的原理,首先说明一点的是程序还很烂,没有做成功。其中发现了一个问题,就是寄存器的地址#define rGPBCON (*(volatile unsigned *)0x56000010)我看了这个的时候,到底这是定义的一个什么呢?上网搜了一下,总结一下。1.首先这是定义的一个变量,这一点要非常明白,因为rG原创 2011-04-17 15:46:00 · 6901 阅读 · 7 评论