随笔分类 - 嵌入式ARM+Linux
摘要:说明一下我的环境:主机操作系统是Windows7,虚拟机是Ubuntu 9.04。安装好Ubuntu 9.04后,点击设备菜单,如图所示。先点击安装增强功能包。然后在命令行里运行:cd /cdromsudo ./VboxLinuxAdditions.run安装完毕后重启。重启完成后依然点击设备菜单,选择共享文件夹。然后添加共享文件夹。注意注意,下面便是要注意的问题所在了。一定要自己手动填写一个共享文件夹的名称,千万不要用默认的名称!比如,你选择的文件夹名字是sharedfolder,其默认的共享文件夹名称也是这个,这时候一定要改掉成别的名字,否则在Ubuntu里不能使用。接下来在Ubuntu系
阅读全文
摘要:都记录到这里吧: 2013年2月5日 开始搭建环境 这几天不在状态,现在是2013年2月8号 虚度了几天了:2013年2月5日星期二 安装vmware tool需要文件:linux.iso这个文件是在虚拟机安装目录下面的。先到网上摘抄下来:RHEL5学习--安装vmtools(1) vmtools的安装需要gcc的支持,所以首先确定gcc是否已经安装。可运行gcc -v,若能显示gcc版本信息则说明安装完成,否则请查看上一篇文章(RHEL5.5学习--查看gcc是否安装以及如何安装),完成gcc的安装。(2) 若此时安装还有可能会涉及到一下两个问题,分别为其原因是没有安装kernel的开...
阅读全文
摘要:http://www.ourdev.cn/thread-5467394-1-1.htmlhttp://blog.csdn.net/gooogleman/article/details/4550763googleman博客
阅读全文
摘要:最简单的bootloader的编写步骤:1. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH2. 如果bootloader比较大,要把它重定位到SDRAM3. 把内核从NAND FLASH读到SDRAM4. 设置"要传给内核的参数"5. 跳转执行内核
阅读全文
摘要:在Linux中,为了保护内核空间,将程序的运行空间分为内核空间和用户空间,(内核态和用户态),他们运行在不同的级别上,在逻辑上是相互隔离的,因此用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,他们只能在用户空间操作用户数据,调用用户空间的函数,操作系统为用户提供了两个接口:1.一个是用户编程接口API,用户利用这些操作命令来组织和控制任务的执行或管理计算机系统,2.另一个接口是系统调用,编程人员使用系统调用来请求操作系统提供服务。系统调用包括:进程控制、文件系统控制、系统控制、内存管理、网络管理、socket控制、用户管理、进程间通信8个模块Linux中文件分为4种,普通文件、目录
阅读全文
摘要:烧写系统的操作我就不多说了,谢思源还是很牛啊,估计人家当年学的时候真的是发了很多时间在上面,而我,惭愧,少壮不努力,老大徒伤悲!系统烧好了以后然后就是缺少一个库,这个库是在/usr/local/tslib/lib 这个路劲下面,其他一些就不多解释了,只要搞定这个然后将QT编译好的程序用命令./myCom -qws然后就可以运行起来了
阅读全文
摘要:先上代码吧:/*--------------------------------------------------------------日期:2012/1/1功能:串口接收转发到网络--------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include "rs232.h"#include <errno.h>#include <sys/
阅读全文
摘要:;**********OPTIONS*******************************;_RAM_STARTADDRESS EQU 0xc000000_ISR_STARTADDRESS EQU 0xc7fff00 ;GCS6:64M DRAM/SDRAM 中断起始地址,这个地址就直接;_ISR_STARTADDRESS EQU 0xc1fff00 ;GCS6:16M DRAM;BUSWIDTH; 16,32 GBLA BUSWIDTH 定义一个全局变量,数据型变量,变量名为BUSWIDTHBUSWIDTH SETA ...
阅读全文
摘要:一步一步学习uCOS和ARM体系结构的心得学习必备条件:1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);2、学习必备书籍 《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位) 《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者) 《μC/OS-Ⅱ标准教程》--杨宗德 对于英文不好的朋友可以购买《ARM体系结构与编
阅读全文
摘要:#include "..\inc\config.h"void Main(void){ Target_Init(); //目标板初始化,在target.c中定义 Delay(10); //串口0输出 Uart_Printf(0,"***********************\n"); Uart_Printf(0,"欢迎使用ADS开发环境\n"); Uart_Printf(0,"*****************...
阅读全文
摘要:简单的介绍 打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所以叫笔记而不是文章,是因为它们完全是本人个人学习经验的总结,而这些经验都来自于其他前辈的无私奉献,在这里对这些乐于发表自己经验的前辈致以由衷的感谢!现在我把这些前辈的文章经过自己的理解写出来一方面是对于他们的尊重,另一方面也希望觉得本人的笔记有参考意义的朋友把这种精神继续传下去。再次声明,本人确实是个菜鸟,现在手头的板子是自己画的,以RT&ZQ的板子为底版,对部分电路进行了改动。比如加入了SD卡,IIC总线键盘,触摸屏,GPS,GPRS等等。并对LCD接
阅读全文
摘要:ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码。下面的代码先暂且这样吧,没啥注释的,时间关系,我还是先搞些应用再说^_^;=========================================; NAME: 2410INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-variables; HISTORY:; 2002.02.25:kwtark: ver 0.0; ...
阅读全文
摘要:BANK0 0x0000 0000 ~~ 0x0800 0000还是算几条地址线好算点,总共27条地址线,所以是128MB,
阅读全文
摘要:问渠哪得清如水,为有源头活水来!老天终于让我点亮华恒板子上一盏灯!这个电路不解释了,看看和CPU是怎么连接的吧!TOUT0 is the PWM output这里提示到TOUT0是一个PWM的输出脚,然后接一个灯来显示状态吧!上图:The Wave Form When a Dead Zone Feature is Enabled,当死区被允许的时候的波形图!先看看GPIO的时候吧,这个脚是个复用脚,可以当做普通IO脚来用,从上图中可以看出TOU0和GPB0复用脚。先玩熟IO操作在谈高级点的,学会走路要紧。接下来操作IO口了。先看看GPB组这组GPIO。上图中就是GPB这组GPIO了,GPB总共
阅读全文
摘要:终于谈到流水灯了,先看看电路图吧,图1图1中所示的电路图是Led外接部分,上拉电阻方式连接,然后采用灌电流方式点亮LED灯,主要是看它怎么和我们主控芯片S3C2440相连接。图2图2所示就是LED的负极和S3C2440芯片相连接的部分图了,用到的GPIO脚是GPB7、GPB8、GPB5、GPB6。然后再查DATASHEET即可查到GPB的控制寄存器:图3 GPB配置寄存器、数据寄存器、上拉使能寄存器上图3就是GPB这组IO口的寄存器说明部分了,有各自的地址和说明和复位的初始值,还有为这组IO口保留的寄存器地址。当然我们只用到了GPB、5、6、7、8这4个GPIO口,下面继续看这三个寄存器的详细
阅读全文
摘要:串口应该都很熟悉了,具体通信原理我就不提了,这个百度上都很多讲的,然后就直接看函数了。void Uart_SendByte(int data)//这个函数是发送整型数据,参数为data{ if(whichUart==0)//这个是选中串口0 { if(data=='\n')//然后判断数据不为空 { /*寄存器的原始宏定义, #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status*/ while(!(rUTRSTAT...
阅读全文
摘要:汇编: EXPORT Fi EQU 5 AREA F,CODE,READONLY IMPORT g ;使用伪操作IMPORT声明C函数g() ENTRY STR LR,[SP,#-4]! ;保存返回地址 MOV R0,#i ADD R1,R0,R0 ;假设进入程序f时,R0中为i,R1值为2*i ADD R2,R1,R0 ;R2值为3*i ADD R3,R1,R2 ;R3值为5*i STR R3,[SP,#-4]! ;第五个参数5*i通过数据栈sp传递 ADD R3,R1,R1 ;R4值为4*i BL g ;调用c函数g() A...
阅读全文
摘要://汇编与C语言混合编制实验//c程序#include <stdio.h>void strcopy(char *src,const char *dst){int ch;__asm{loop:LDRBch,[src],#1;将src中的字数据写入到变量ch中,并将新地址src+1写入src中。 STRBch,[dst],#1CMPch,#0;BNEloop}}int main(void){const char *a="Hello world!";char b[20];__asm{MOVR0,a//地址赋值MOVR1,b//数组地址赋值BLstrcopy,{R0,R
阅读全文
摘要://对0x30100000地址处,分别作字长、半字、字节的读、写int main(void){ unsigned long *ptr =(unsigned long*)0x30100000; unsigned short *ptrh=(unsigned short*)0x30100000; unsigned char *ptrb=(unsigned char*)0x30100000; unsigned char tmpb; unsigned short tmph; unsigned long tmpw; *ptr=0x12345678; tmpw=*ptr; //字长读 *ptr=t...
阅读全文
摘要:前面2个都是ARM汇编指令,这个是Thumb,最大的区别就是一个是32位的,一个是16位的,Thumb状态下的寄存器集的子集这个还是慢慢在领会和ARM汇编之间的区别吧,在编写Thumb指令时,先要使用伪指令CODE16声明,而且,在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,则可使用伪指令CODE32声明。先看程序:;第一段 AREA EXAMPLE3,CODE,READONLY ENTRYMAIN ADR R0,THUMBPROG+1;这里为啥要加1呢,主要是因为:n(1)当操作数寄存器的状态位(位[0])为1时,执行BX指令进入Thumb状态。如果.
阅读全文

浙公网安备 33010602011771号