自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

伍宝哥的专栏

记录每天点点滴滴的进步

  • 博客(27)
  • 资源 (3)
  • 收藏
  • 关注

原创 linux-3.12.48内核向at91sam9g25平台移植小结

linux-3.12.48内核向at91sam9g25平台移植小结从5月底开始进行着手向9g25平台移植新的内核,到国庆开假后完成内核的移植(一些bsp底层驱动程序下一步完成)用时四个月有余的业余时间方完成这一工作,这中间又有大部分时间没能利用起来,如果是工作时间来做的话,应该也需要一个月的时间吧。移植的过程中走了弯路,首先是内核版本选择上:开始时选择了最新的内核l

2015-10-10 17:09:13 2755 1

原创 at91sam9g25处理器uboot移植 个人笔记一

1 生成补丁 与 打补丁  生成补丁 diff -upNr old/ new/ > patch-x.y.z  diff -upNr u-boot-2014.07/ u-boot-2014.07_moveto9g25/ > moveto9g25-2015.08.25-ok.patch  打补丁   cd old           patch -p1 ----------

2015-08-25 17:40:05 3184

原创 个人总结日记:ltv350三星LCD并行接口接2440处理器的linux驱动程序移植

ltv350三星LCD并行接口接2440处理器的linux驱动程序移植总体上分三步:1> framebuffer_alloc函数分配一个fb_info类型的结构体该结构体用于填充描述使用的液晶参数,比如像 像素类型,是否有硬件加速,长宽,每个像素的位数,调色板等。其中主要填充fix与var这两个成员结构体变量,这两个结构体在应用程序中可以通过ioctl函数的命令字

2014-12-23 20:42:07 913

原创 位置无关代码码与位置相关代码

位置无关代码码与位置相关代码    位置无关与位置相关代码是关于arm程序在跳转时的寻址方式的两种,一般情况下两种方法都能达到跳转到目的地址的目标,但是在某些特定的环境下,两种跳转方法得到的结果相关较大。位置无关代码的跳转可通过“B或BL 标号”命令执行,当执行B或BL命令实现跳转时,实际的二进制代码在跳转时是执行:计算可执行代码中目标地址到当前PC值处的距离,然后把该距离值加上当前的PC

2014-09-20 17:58:06 2937

原创 两个老外婆过河,函数递归解法

#include#includechar start[7] ={'a','a','a','0','b','b','b'};char end[7] ={'b','b','b','0','a','a','a'};char stack[1000][7];char stack_top=0;void debug_stack(){ int index; for(index=stack_

2014-07-16 21:37:07 803

原创 Linux内核启动代码分析二之开发板相关驱动程序加载分析

Linux内核启动代码分析二之开发板相关驱动程序加载分析1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_kernel()   --2>setup_arch(&command_line);//该函数位于arch/arm/kernel/setup.c          //在这个函数中定义了一个描述

2013-08-14 17:30:31 1228

原创 linux内核init启动过程分析(一)

linux内核启动过程分析(一)从 源码目录/init/main.c开始分析asmlinkage void __init start_kernel(void) //__init表示这个函数的代码放在__init段中,这个段在arch/arm/kernel/vmlinux.lds.S链接文件中定义 1-> ......中间省略了很多其他的初始化设置 1-> rest_init()

2013-05-30 21:37:36 1746

原创 linux设备驱动之 i2c设备驱动 at24c08驱动程序分析

linux-2.6.22源码分析\linux-2.6.22\drivers\i2c\chips\eeprom.c为例,分析i2c设备驱动程序的原理1.从驱动的入口函数开始分析  eeprom_init    >i2c_add_driver(&eeprom_driver)      >i2c_register_driver(THIS_MODULE, driver)

2013-01-09 18:19:43 1669

原创 dm9000网卡的linux驱动分析

分析内核自带的dm9000网卡驱动程序:      static struct platform_driver dm9000_driver = {       .driver = {        .name    = "dm9000",        .owner  = THIS_MODULE,       },       .probe   = dm9000_probe

2012-12-27 19:35:44 852

原创 linux块设备驱动程序分析之 nor flash驱动分析 以及使用内存模拟 nor flash

struct map_info { char *name; unsigned long size; resource_size_t phys;#define NO_XIP (-1UL) void __iomem *virt; void *cached; int bankwidth; #ifdef CONFIG_MTD_COMPLEX_MAPPINGS map_w

2012-12-25 18:03:50 1732

原创 linux块驱动程序分析 之 nand flash 驱动编写过程分析

内核版本号:linux-2.6.22块设备程序: driver/mtd/mtdblock.c1 从驱动的注册函数开始分析  a.先定义并初始化一个全局变量 mtdblock_tr  static struct mtd_blktrans_ops mtdblock_tr = {   .name  = "mtdblock",   .major  = 31,   .part_b

2012-12-24 11:31:48 1260

原创 linux块设备驱动之make_request与request 分别创建内存虚拟磁盘

APP:read write 文件 保存到磁盘--------------------------------(文件系统)VFS虚拟文件层--------------------------------block块驱动 core核心驱动程序--------------------------------硬件相关的驱动程序,完成扇区的读写文件系统调用底层驱动:ll_r

2012-12-21 12:03:12 2341

原创 LCD驱动设计与分析 --GQ2440+LTV350QV_F04 + LINUX2.6.22内核

LCD使用的是LTV350QV_F04 参数设置见4_th_ok程序中的设置 程序中使用了  .fb_fillrect = cfb_fillrect, .fb_copyarea = cfb_copyarea, .fb_imageblit = cfb_imageblit,三个由驱动模块提供的函数:所以:make menuconfig----->device driver  ----> graph

2012-12-15 16:04:51 1965

原创 移植Linux-2.6.22到GQ2440上

移植 linux-2.6.22 1 解压  find -name "*defconfig"  修改顶层 Makefile   ARCH            ?= arm CROSS_COMPILE   ?= arm-linux-  make s3c2410_defconfig  make menuconfig  make uImage  tftp 下载到sdram 运行,乱码2 修改代码   

2012-12-15 16:04:49 938

原创 移植Linux-3.4.2到开发板gq2440

移植 linux-3.4.2 笔记 1. tar -xjf linux-3.4.2.tar.bz2   cd linux-3.4.2   修改Makefile     find -name "*defconfig"   列出所有默认的开发板的配置   make s3c2410_defconfig   在顶层目录生成.config   make menuconfig   make uImage

2012-12-15 16:04:46 1411

原创 uboot-2012-4.1移植 (2)修改uboot代码

3  修改代码   a 修改start.s中时钟设置部分。                /*修改这里,时钟设置不正确*/      /* FCLK:HCLK:PCLK = 1:4:8 */      /*设置时钟*/      ldr r0,=0x4c000014      mov r1,#0x05      str r1,[r0]            /* 如果HDIVN非0,CPU的总线模

2012-12-15 16:04:44 1182

原创 uboot-2012-4.1移植 (一)分析uboot

1   cd board/samsung/    cp smdk2410/ smdk2440/ -rf    cp smdk2410.h smdk2440.h    cd ../../    修改boards.cfg    仿照  smdk2410                     arm         arm920t     -                   samsung    

2012-12-15 16:04:42 622

原创 ARM的step内存到SDRAM内存代码复制程序调试之罪魁祸首 ADR与LDR

start.S启动的汇编代码#define S3C2440_MPLL_200MHZ ( (0x5C#define MEM_CTL_BASE   0x48000000 .text.global _start_start: /*1关看门狗*/ mov r0,#0x53000000 mov r1,#0 str r1,[r0] /*2设置时钟*/ ldr r0,=0x4C000014 mov r1,#

2012-12-15 16:04:40 611

原创 我常用的Linux指令

1 登录字符登录  CTRL+ALT+F1  图形登录  CTRL+ALT+F72 添加用户 useradd 用户名3 修改密码 passwd [选项] [用户名]4切换用户 su [选项][用户名]5 关机 shutdown now6拷贝 cp [选项][源文件或目录  目的地] 拷贝目录 cp -r ***  ***7 移动或更名 mv [选项] *** ***      相当于剪切8 删除 

2012-12-15 16:04:38 381

原创 PIC18F4520的ADC与LCD1602显示程序

/*说明:该程序使用的开发环境为:microchip公司的MPLAB X IDE v1.41、mplabc18-v3.40      在该环境下编译成功、在proteus7.5中进行仿真成功。      ADC使用的是通道1,液晶模块的RS、R/W、E、D0~D7与PIC18F4520的C0、C1、C2、RD0~RD7      相连接。仿真时,RE3需要拉高电平,否则AD转换无法进行。*/#in

2012-12-15 16:04:36 2745

原创 PIC18F4520单片机AD转换程序与注释

/*包含头文件:该头文件位于D:\Program Files\Microchip\mplabc18\v3.40\h下,这下面是不同型号的单片机的头文件定义,使用时把相应的头文件包含进来就可以了*/#includeconst unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴型数据管0-9的字段

2012-12-15 16:04:34 4941

原创 2多线程的阻塞、唤醒与同步

转载!原文:  http://apps.hi.baidu.com/share/detail/19786281 http://hi.baidu.com/boobleoo0/blog/item/5f935039a37c58f8b311c77f.html http://topic.csdn.net/u/20110105/16/12717238-9816-4571-a03d-e8b603724946.ht

2012-12-15 16:04:32 534

原创 1 red hat linux 9下建立C开发环境

今天,老板给了个2410的试验箱,让我搞一下。实验指导书上用的是red hat linux 9。我本不想用这个linux,年代太久了,而且也很丑,个人观点。打算用red hat enterprise 5.可是NFS挂载总是出问题。挂上后,运行主机上的程序或拷贝东西时,就卡住了!很郁闷,最后也没有解决。可能是实验箱上用的也是Linux2.4的内核的原因吧。于是我也换成了red hat linux 9

2012-12-15 16:04:29 510

原创 字符型驱动1 注册加载与卸载,读写与控制IOCTL的使用

/* 关于内核模块读写函数中的最后一个参数loff_t *f_pos的说明: 这个参数的默认值为0,该变量一但修改后,再使用读 或 写函数时,这个参数的值就是修改后的值。 可以用这个值来修改copy_to_user copy_from_user 的指针的偏移。 另外对于file->f_pos 这个值默认也是0,如果没有手动修改它,它会一值为0。 使用这个变量也可以修改上述两个函数的指针的

2012-12-15 16:04:27 515

原创 ADS中防止全局变量被优化

在ADS中,当你定义了一个全局变量时,在使用的过程中,尤其是在判断这个变量时,一定要小心全局变量被优化! 因为当你的程序判断这个全局变量时,而这时你的这个全局变量恰好被别的外设或中断给修该了。。。这时你就悲剧了,虽然你的程序逻辑上是没有问题的,但是由于编译器会对你的代码做出优化!所以编译出来的程序不会对这种情况(外设或中断修改了全局变量)做出你想要的反应。 怎么解决这个问题呢?ADS中给出了一

2012-12-15 16:04:25 1324

原创 关于ARM7软中断的那个小事 2011年11月25日

1 读取软中断标号的方法: 软件中断由专门的软中断指令SWI 触发,SWI 指令后面跟一个中断编号,以标识可能共存的多个软件中断程序。在C 程序中调用软件中断需要用到编译器的扩展功能,使用关键字“__swi”来声明中断函数。注意软中断号码同时在函数定义时指定。__swi(0x24) void my_swi (void);这样当调用函数my_swi 的时候,就会用“SWI 0x24”来代替普通的

2012-12-15 16:04:23 555

原创 51上移植UC/OS II 2011年11月12日

在keil c移植UCOSII有两个比较特殊的地方。1、局部变量的覆盖问题。2、函数的再入性问题。下面我就这两方面谈一下自己的体会。1、关于局部变量的覆盖。在PC机上的C编译器,一般是这样,在函数调用时临时给局部变量在堆栈空间中分配地址,函数返回后释放在堆栈中分配的空间。如果一个函数被递归调用,每次调用时局部变量分配的地址空间都不相同,因此不存在局部变量被覆盖的问题。又由于局部变量是分配在堆栈空间

2012-12-15 16:04:21 492 1

ubuntu1204和4.4.3编译器qt4.8.5移植文档

在linux环境下实现了对arm平台的交叉编译qt4.8.5

2013-11-29

DS18B20驱动代码

DS18B20驱动代码DS18B20驱动代码DS18B20驱动代码

2011-10-29

研究生课件矩阵论

研究生课件矩阵论矩阵论矩阵论矩阵论矩阵论

2011-10-29

空空如也

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

TA关注的人

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