
嵌入式
r91987
专栏地址:https://segmentfault.com/blog/skyarthur
展开
-
内核移植──2.6.14
1 修改linux2.6.14下面的makefile文件 找到ARCH和CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux- (此处为你交叉编译的路径原创 2010-02-27 19:05:00 · 564 阅读 · 0 评论 -
C51-数据存储类型
<br />KEILCx51是面向8051系列单片机及其硬件控制系统的开发工具。它定义的任何数据类型必须以一定的存储类型的方式定位在8051的存储区中,否则便没有任何的实际意义。该编译器通过将变量、常量定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)的方法,将他们定位在不同的存储区中。<br /> 8051系列单片机将程序存储器(ROM,存储空间)和数据存储器(RAM,运算空间)分开,并有各自的寻址方式(针对汇编语言)。8051系列单片机在转载 2011-03-29 12:10:00 · 3869 阅读 · 0 评论 -
在CCS中使用printf函数输出的问题和解决过程
<br />在编写程序时,使用printf函数将一些参数显示出来对于调试程序很有用,但是初次在CCS中使用Printf函数时却遇到了一些问题,下面将这些问题的解决过程贴出来,虽然不能准确的指出问题所在,但是可以保证成功的用printf函数实现屏幕输出,希望对大家有用。<br />问题出现:<br />我用的是瑞泰的F2812的开发板,使用的是例程里的Cprogram程序,当时在调试IQmath程序的例程时,里面有用printf软件实现屏幕输出的语句,但我在Cprogram中加入这些语句时编译时却出现转载 2011-05-17 12:40:00 · 16523 阅读 · 1 评论 -
tms320f2809硬件调试无法设置寄存器
使用的是ICETEK-5100_USB仿真器。为了验证DSP是可工作的,编写一个有关GPIO的程序,是某几位为高电平,然后用万用表测量结果。验证其正确性。具体程序如下:#define GPADAT1 *(unsigned int *)0x6FC0#define GPADAT2 *(unsigned int *)0x6FC1 //GPIO数据寄存器#define GPAMUX1原创 2011-06-09 22:23:00 · 1751 阅读 · 1 评论 -
vivi开发笔记
今天把vivi编译了一下,顺便解决了几个问题。算是初步工作吧,下一步打算读vivi的源代码,然后改造一下,最后争取自己完成一个小的bootloader。 准备工作(这些都是基于EDUKIT-III教学平台,虽然开发工具上有些不同,但是原理和流程上是相同的。相信理解了嵌入式系统开发流程之后,对这些就会有很清晰的认识): 1)下载Nand_Prog.ide.bin到nor flash。这步工作是为烧写原创 2010-02-27 19:01:00 · 844 阅读 · 0 评论 -
嵌入式arm中MMU原理剖析
一、MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模转载 2011-09-03 12:45:35 · 997 阅读 · 0 评论 -
GUN 伪指令 .word 举例
说说这个.word的作用。word expression就是在当前位置放一个word型的值,这个值就是expression 举例来说, _rWTCON: .word 0x15300000 就是在当前地址,即_rWTCON处放一个值0x15300000转载 2011-09-02 10:31:45 · 1184 阅读 · 0 评论 -
S3C6410启动模式介绍
目前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下S3C6410的启动。 先读一下S3C6410 User Manual的第3章 Syste转载 2012-01-27 17:09:19 · 1128 阅读 · 0 评论 -
ARM汇编指令集
一、跳转指令。跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以转载 2012-01-25 14:43:44 · 804 阅读 · 0 评论 -
OK6410——uboot
暑假在淘宝上买了一块OK6410板子,希望有空的时候研究一下,毕竟对这方面蛮感兴趣的。大致的计划,现了解linux系统,包括bootloader,kernel和cramfs。整个流程自己编译一遍,体验一下,希望从中能够学到点东西。好现在入正题。u-boot源代码的官方下载地址:点击打开链接1. 搭建开发平台采用ubuntu10.04,毕竟自己比较熟悉。第一步要安装交叉编译工具,原创 2011-08-17 15:34:58 · 5780 阅读 · 0 评论 -
nandflash启动理解
有很多同学在移植u-boot时,都会对s3c2440从Nandflash启动的过程非常迷惑。这里发这个帖子给大家介绍一下它的启动流程。 大部分ARM9的CPU内部都集成有一个SRAM,SRAM是英文Static RAM的缩写,它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。这样他不需要初始化就能够直接使用。这与我们在外部扩展的大容量的SDRAM是不一样的,外部大转载 2012-06-02 14:41:20 · 6500 阅读 · 1 评论 -
打造属于自己的uboot
对bootloader我一直是很敢兴趣的,之前上嵌入式课的时候由于抽不出时间一直没有好好研究当时使用的vivi。幸好最近忙里偷闲,以ok6410开发板为平台,对于uboot进行了一番不算很深入的研究。我对bootloader基本上没啥了解,所以本质上是从0开始学起。一开始不知道从哪里入手,幸好有一些开发板的资料,当然包括移植好的uboot,可惜版本有点老,是1.1.6的,不过不失为很好原创 2012-02-12 12:22:50 · 2934 阅读 · 3 评论 -
VHDL并行语句于顺序语句的理解
<br />VHDL的并行语句用来描述一组并发行为,它是并发执行的,与程序的书写顺序无关。<br /><br />进程语句<br />begin<br />进程语句包含在结构体中,一个结构体可以有多个进程语句,多个进程语句间是并行的,并可访问结构体或实体中定义的信号。因此进程语句称为并行描述语句。<br /><br />进行语句结构内部所有语句都是顺序执行的<br />进程语句的启动是由process后敏感信号表中所标明的敏感信号触发来的。<br />各进程间的通信是由信号来传递的<br转载 2010-10-02 15:01:00 · 22069 阅读 · 3 评论 -
video4linux——包含yuv转rgb
#include stdio.h>#include stdlib.h>#include unistd.h>#include linux/videodev.h>#include sys/ioctl.h>#include fcntl.h>#转载 2010-03-31 00:27:00 · 1072 阅读 · 0 评论 -
linux驱动程序实例
本例是冯国进的 《嵌入式Linux 驱动程序设计从入门到精通》的第一个例子感觉真是好书 强烈推荐注释是deep_pro加的 转载请注明!我的特点是文不加点!这个驱动是在内存中分配一个256字节的空间,供用户态应用程序读写。先是头文件 demo.h#ifndef _DEMO_H_#define _DEMO_H_#include /* needed for the _IOW etc转载 2010-03-01 22:18:00 · 2992 阅读 · 0 评论 -
根文件系统制作(Busybox1.9.2)
1 建一个目录rootfs用来装文件系统 2 # mkdir bin dev etc home lib mnt proc root sbin tmp usr var # mkdir usr/bin usr/sbin# mkdir mnt tmp var# chmod 1777 tmp# m转载 2010-02-27 19:16:00 · 891 阅读 · 0 评论 -
解决应用程序执行时出现“-/bin/sh: ./xxx: not found”
在嵌入式Linux上执行应用程序时,出现“-/bin/sh: ./xxx: notfound”,经分析,在Linux操作系统上执行应用程序时,首先要把程序装载进内存中,完成该功能的是装载器。在PC平台上的Linux中发现,在lib目录下存放很多库文件,其中就有装载器对应的库文件(ld.so和ld-linux.so)、libc.so等。在我的嵌入式Linux的根文件系统的lib目录下没用转载 2010-02-27 19:35:00 · 6026 阅读 · 0 评论 -
基于s3c2410 2.6.30内核cs8900网卡驱动的移植
因为在驱动中使用的是虚拟地址,因此要首先将网卡的物理地址映射到虚拟地址**************************************************************1 。在include/asm-arm/plat-s3c24xx/common-smdk.h文件中添加其中必须使用宏__phys_to_pfn 即将物理地址右移12位,跟踪源码可知 与str转载 2010-02-27 19:48:00 · 1184 阅读 · 0 评论 -
2.6.14──cs8900网卡移植
1 cs8900.c和cs8900.h放到/drivers/net/arm/ 2 在cs8900.c中的cs8900_probe()函数中,memset (&priv,0,sizeof (cs8900_t));函数之后添加如下两条语句: __raw_writel(0x2211d11转载 2010-02-27 19:53:00 · 702 阅读 · 0 评论 -
s3c2410──2.6.14内核STN lcd 驱动移植
1 在arch/arm/mach-s3c2410/mach-smdk2410.c中添加//lcd#include #include //-------------------------------------------lcdstatic struct s3c2410fb_mach_info s3c2410_lcd_in原创 2010-02-27 21:41:00 · 1244 阅读 · 1 评论 -
QT4.4.2移植
1. 下载qt-embedded-linux-opensource-src-4.4.2.tar.bz2 下载Qtopia Core 4的源代码,建议到www.qtopia.org.cn下载2.# tar zxvf qtopia-core-opensource-src-4.2.2.tar.gz # cd qtopia-core-opensource-原创 2010-02-27 23:27:00 · 1167 阅读 · 0 评论 -
C语言-预处理程序
我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理器指令,它们扩充了程序设计的环境。现把常用的预处理命令总结如下:1. 预处理程序按照ANSI标准的定义,预处理程序应该处理以下指令:#if#ifdef#ifndef#else#elif#endif#define#undef#line#error#pragma#in转载 2010-02-27 23:59:00 · 1065 阅读 · 1 评论 -
Ubuntu编写字符设备驱动程序——内核树
1. 先查看自己OS使用的内核版本 uname -r如果安装系统时,自动安装了源码。在 /usr/src 目录下有对应的使用的版本目录。例如下(我是自己下的) shana@shana:/usr/src$ ls linux-headers-2.6.22-14 linux-headers-2.6.22-14-generic linux-source-2.6.22 /*这个就转载 2010-03-01 21:07:00 · 3095 阅读 · 0 评论 -
ubuntu 字符设备驱动程序──hello world
我在 /home/shana/linux_q/ 目录下创建2个文本文件 hello.c Makefile //hello.c #include #include MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world/n");转载 2010-03-01 21:39:00 · 3418 阅读 · 3 评论 -
Linux 2.6 字符设备驱动程序
○、说明笔记适用于Linux的2.6.10以后的内核。笔记以LinuxDeviceDriver3提供的scull程序(scull目录中的main.c和scull.h)为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录顺序。比如,module转载 2010-03-01 21:42:00 · 2002 阅读 · 0 评论 -
linux内核驱动模块加载方式
在类unix操作系统中,驱动加载方式一般分为:动态加载和静态加载,下面分别对其详细论述。一、动态加载 动态加载是将驱动模块加载到内核中,而不能放入/lib/modules/下。 在2.4内核中,加载驱动命令为:insmod ,删除模块为:rmmod; 在2.6以上内核中,除了insmod与转载 2010-03-01 21:43:00 · 4336 阅读 · 2 评论 -
SD卡mmc.bin的理解
对于普通的SD卡,我有个2g的sd卡,拿它作为例子:(1)使用本站提供的windows工具完全格式化一次你的sd卡(2)进到ubuntu的环境下查看SD卡扇区数量:zswan@zswan-laptop-ubuntu:~/tmp$ sudo fdisk /dev/sdb1WARNING: DOS-compatible mode is deprecated. I转载 2012-06-02 14:40:30 · 6213 阅读 · 2 评论