Linux
文章平均质量分 75
comwise
这个作者很懒,什么都没留下…
展开
-
Linux内核之 “typedef int (init_fnc_t) (void);”
我们通常情况下会如下使用 typedef :typedef int MyInt;MyInt a;这个时候我们的MyInt 就和int是一样的意思。而对于函数的申明我们通常会这样申明:int InitFunction() (void);此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型。而对于 typedef int(in转载 2013-06-30 00:41:11 · 1271 阅读 · 0 评论 -
GIT在Linux上的安装和使用简介
GIT最初是由Linus Benedict Torvalds为了更有效地管理Linux内核开发而创立的分布式版本控制软件,与常用的版本控制工具如CVS、Subversion不同,它不必服务器端软件支持,速度和效率也有着相当程度的提高。 如果拥有CVS或者SVN的使用背景,那么更熟悉的方法是客户端-服务器端模式,所有的文件仓库(repository)都是存放在服务器上的,用户需要在本地转载 2013-12-27 16:28:48 · 702 阅读 · 0 评论 -
韦东山视频实验之Nand驱动
这里主要牵涉到static struct nand_chip mtd_info这两个底层封装的函数nand原理分析: 驱动分析:1)要进行nand时钟和时序的设置 这里面会进行nand的寄存器的片选,命令的设置,地址或者数据的设置,状态位的读取,nand时钟和时序的设置等2)nand flash底层的自动探测,识别nand 这里面会进行初始的函数设置na原创 2013-10-15 20:01:56 · 1263 阅读 · 0 评论 -
韦东山视频实验之虚拟网卡
遇到的问题1.调试老是弹出以下问题 /home/smb/pro/16th_virtnet/virtnet.c: In function 'emulator_rx_packet':/home/smb/pro/16th_virtnet/virtnet.c:48: error: dereferencing pointer to incomplete type/home/smb/pro/1原创 2013-10-16 21:58:38 · 1687 阅读 · 1 评论 -
韦东山视频实验之Nor驱动
遇到的有两个问题1)写数据: 在地址0x100000写入0x1234使用如下m命令得不到之前写入的值 NOR手册:往地址555H写AAH 往地址2AAH写55H 往地址555H写A0H 往地址PA写PD2440的A1接到NOR的A0,所以2440发出(555hUBOOT怎么操作?往地址AAAH写AAH mw.w aaa aa原创 2013-10-15 23:06:01 · 1381 阅读 · 1 评论 -
韦东山视频实验之USB鼠标驱动—OOPS错误分析
先将上节的代码#if 1 usb_buffer_alloc(usbdev, len, GFP_ATOMIC, &usb_dma_buff_phys_addr); //初开始没有给bus_buff赋值,导致内核引用出现错误#else usb_buff = usb_buffer_alloc(usbdev, len, GFP_ATOMIC, &usb_dma_buff_phys_a原创 2013-09-19 01:21:51 · 2205 阅读 · 0 评论 -
韦东山视频实验之USB鼠标驱动
usb 设备主要涉及配置-》接口-》端点,基本上是包含关系 usb设备主要使用接口提供的配置信息,可以当做操作的逻辑设备和传输通道传输数据采用urb 如何测试1. make menuconfig去掉原来的USB鼠标驱动-> Device Drivers -> HID Devices 2. make uImage 并使用新的内核启动3. insmod u原创 2013-09-18 23:46:02 · 1949 阅读 · 0 评论 -
韦东山书中MMU内嵌汇编代码
具体有关指令的请看上一文,或者这个链接提供的说明http://blog.chinaunix.net/uid-26833883-id-3348379.html unsigned long ttb = 0x30000000;__asm__( //reset coprocessor register "mov r0, #0\n"原创 2013-08-25 21:15:01 · 1608 阅读 · 0 评论 -
定时器与中断触发次序
之前在做触摸屏实验的时候,出现定时器几乎可以同时出现,请看我在论坛发的问题当初考虑的是定时器是由中断来实现的,在今天看过内核后发现这个是错误的看一年内核的有关实现asmlinkage void __init start_kernel(void)(linux-2.6.22.6\init\Main.c) init_IRQ(); //初始化中断 ...原创 2013-09-26 13:41:17 · 2473 阅读 · 0 评论 -
hzk16的使用与介绍
HZK16字库是符合GB2312标准的16×16点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。我们在一些应用场合根本用不到这么多汉字字模,所以在应用转载 2013-11-22 23:54:37 · 8534 阅读 · 0 评论 -
韦东山视频之LCD驱动(Mini2440 X35)
说起这块屏幕 可真是费劲 原理图跟别人的好多不一样 时序图也是 lcd上vline 和vframe根本没有 只能通过pci和mck两个时钟进行设置还有就是不知道是uboot的原因还是友善官网提供的原理图有错 vden必须反转才能正常 先贴出自己调试好的代码#include #include #include #include #include #include #i原创 2013-09-16 11:49:18 · 4580 阅读 · 2 评论 -
dma_alloc_writecombine
先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速 率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。转载 2013-09-14 23:39:09 · 800 阅读 · 0 评论 -
adr与ldr区别(Mini2440裸机程序阐述)
有关概念首先arm地址有几个地址概念:编译地址、期望运行物理地址、实际运行物理地址、位置无关、位置相关编译地址 :编译阶段的生成地址,其是相对地址 ,有些地址还没确定,如调用其他.O文件中的函数或库函数期望运行物理地址 :链接阶段生成的地址(期望绝对地址 ),会确定编译阶段没有确定的地址,并会根据链接器假设期望的程序烧录运行物理启始地址 ,来分配期望运行物理地址实际原创 2013-08-25 09:24:20 · 872 阅读 · 0 评论 -
Mini2440 SDRAM、NAND、MMU
1. SDRAM 当加电默认从NAND启动时,先将4K代码复制到Steppingstone内RAM执行,在执行Steppingstone代码时,会将剩余的代码复制到SDRAM执行,但是使用SDRAM必须先对其有关SDRAM的寄存器进行初始化,以便能使用SDRAM 主要包括寄存器: BWSCON、BANKCON0~7、REFRESH、BANKSIZE、MRSRB6~7原创 2013-06-09 18:57:13 · 1091 阅读 · 0 评论 -
Mini2440 裸机实验之LED程序、按键、中断
测试平台:Mini2440 Win7 64 ADS开发环境测试 此程序主要考虑按键、LED点亮、中断模式(IRQ)之间的联系以下为main.c代码部分,其他请参考三星提供的2440用例代码#define GLOBAL_CLK 1#include#include#include"def.h"#include"option.h"#include"2440addr.h"#i原创 2013-05-28 16:18:01 · 2068 阅读 · 0 评论 -
Linux 内核中“.type”的含义
本文链接:http://codingstandards.iteye.com/blog/831504 用途说明type命令用来显示指定命令的类型。一个命令的类型可以是如下之一alias 别名keyword 关键字,Shell保留字function 函数,Shell函数builtin 内建命令,Shell内建命令file 文件,磁盘文件,外部命令unfound 没有找到转载 2013-09-26 10:18:32 · 1418 阅读 · 0 评论 -
ARM保存中断时,为什么使用“sub lr, lr, #4”
1.首先要谈流水线,在arm执行过程中一般分为取指,译码,执行阶段 也就是假设当前 第一条指令在执行阶段 第二条指令在译码阶段原创 2013-08-29 09:35:20 · 4767 阅读 · 0 评论 -
韦东山视频实验之Input子系统分析之一
原理阐述:主要有驱动层,input核心层,时间处理层,应用层 从前往后一直传送到应用层 调试问题:1. Unspecified device as /devices/virtual/input/input0在里面初始化的时候,初始name即可加入 button_dev->name = "mini2440_keys";之类的即可 2.原创 2013-09-11 13:48:07 · 4193 阅读 · 0 评论 -
韦东山视频实验之Input子系统分析之二
应用程序如何read?Input子系统分析之一讲过应用程序去open,那么如何read呢?搜遍input.c 也没有提供read的函数,有一个可惜不是;那read在哪里定义的呢?想到可能在evdev.c里定义的,先看下他的初始化模块仍以evdev.c (drivers/input/evdev.c)为基础进行说明:static int __init evdev_init(void原创 2013-09-13 21:38:30 · 1643 阅读 · 0 评论 -
u-boot编译链接过程分析(ARM)
1.config.mk通常配置文件生成之后,即可使用make all进行编译,在如下Makefile里面ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))# load ARCH, BOARD, and CPU configurationinclude $(obj)include/config.mkex原创 2013-06-14 23:20:56 · 1157 阅读 · 0 评论 -
u-boot配置过程分析(ARM)
1.u-boot源码结构 源码目录下一般包含以下目录: (1) 平台相关的或者开发板相关的,比如cpu/、baord/ (2) 通用的函数,比如common/ (3)通用的设备驱动,比如drivers/ (4)u-boot工具、示例程序、文档,比如/tools/、/examples、/doc2.u-boot生成配置文件过程 根据顶层r原创 2013-06-14 23:19:52 · 887 阅读 · 0 评论 -
ARM9协处理器CP15、MCR/MRC指令
在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。访问CP15寄存器的指令MCR ARM寄存器到协处理器寄存器的数据传送MRC 协处理器寄存器到ARM寄存器的数据传送MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常中断。转载 2013-06-04 14:11:36 · 1095 阅读 · 0 评论 -
volatile在内核中使用是有害的--摘自Linux内核文档
Documentation/volatile-considered-harmful.txt 的中文翻译如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻译存在问题,请联系中文版维护者。英文版维护者: Jonathan Corbet 中文版维护者: 伍鹏 Bryan Wu 中文版翻译转载 2013-11-13 21:53:01 · 1954 阅读 · 0 评论 -
Dm9000网卡芯片硬件原理分析
. DM9000网卡芯片驱动的预备知识:MAC/PHYDriver2011-01-27 11:24:29 阅读43评论0 字号:大中小 订阅ETHERNET的接口实质是MAC通过MII总线控转载 2013-11-07 00:59:44 · 3969 阅读 · 1 评论 -
网络驱动有关结构体的含义
首先看一下网络驱动必用结构体struct sk_buff不怎么使用的就没有出现解释:struct sk_buff { /* These two members must be first. */ struct sk_buff *next; struct sk_buff *prev; struct sock *sk; //哪个socket套机字拥有此buffer原创 2013-10-17 11:56:28 · 1038 阅读 · 0 评论 -
Makefile中.PHONY的含义
本文转载自http://www.cnblogs.com/hnrainll/archive/2011/04/12/2013377.html Phony TargetsPHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如:转载 2013-08-31 10:20:52 · 1642 阅读 · 0 评论 -
ARM嵌入式开发中的GCC内联汇编__asm__
在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择。但如果完全通过汇编代码实现,又会过于复杂、难以调试。因此,C语言内嵌汇编的方式倒是一个不错的选择。然而,使用内联汇编的一个主要问题是,内联汇编的语法格式与使用的编译器直接相关,也就是说,使用不同的C编译器内联汇编代码时,它们的写法是各不相同的。下面介绍在ARM体系结构下GCC的转载 2013-08-25 19:43:20 · 2997 阅读 · 0 评论 -
win7 64 Mini2440 USB驱动、超级终端、上传工具
一般使用Mini2440这块板子对于Win 7 64来说问题较多通过网上查阅,终于解决了,希望对有些人有些帮助 驱动和上传工具,请从以下地址下载(谷歌下面的一个开源项目,有代码):http://code.google.com/p/supervivi-transfer-tool/注:此工具我测试过,没问题,之前网上提供的有bug 超级终端网上提供的有很多,比如Secu原创 2013-05-07 10:47:05 · 1898 阅读 · 0 评论 -
Win 7 64 Mini2440 使用ADS1.2配置步骤和问题解决方法
软硬件环境:Win7 64 Mini2440 JLink8.0 ADS1.2 J-LinkV4.08l ADS的配置:1. 新建工程 使用CodeWarrior编译首先要新建工程,然后新建或者添加已有文件将其添加到当前工程或者使用已经存在的工程2. CodeWarrior设置 打开CodeWarrior,选择Edit菜单,打开DebugRelSetting原创 2013-05-15 20:19:04 · 1998 阅读 · 0 评论 -
sizeof与strlen的区别
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的转载 2013-04-27 20:21:35 · 631 阅读 · 0 评论 -
u-boot移植(Mini2440)
开发平台:WIN7 64 Mini2440 u-boot-2008-10 Red Hat Enterprise 5.1 VMvare9.0从网上以及有关书籍总结而来,移植uboot(简略)一般的步骤如下: 注意:以下都以Mini440为开发平台,不再下面说明1. 创建单板目录和单板头文件,修改Makefile 比如mini2440,需要在uboot根目录下创建目录 boar原创 2013-06-14 23:58:22 · 855 阅读 · 0 评论 -
Win7 64 ADS1.2 编译弹出Error: L6218E: Undefined symbol sprintf (referred from 2440...)
软硬件平台:WIN7 x64 ADSv1.2 Mini2440 JLink8.0 J-link ARM V4.08l 调试小程序一般不会出现什么问题,但是调试国嵌和友善光盘中的myled...程序会出现问题 Make 和Run Project的时候提示错误,错误信息如下: Warning : L6301W: Could not find file C:\Program原创 2013-05-18 15:52:32 · 5557 阅读 · 0 评论 -
如何参与Linux内核开发以及开发经验
如何参与Linux内核开发---------------------这是一篇将如何参与Linux内核开发的相关问题一网打尽的终极秘笈。它将指导你成为一名Linux内核开发者,并且学会如何同Linux内核开发社区合作。它尽可能不包括任何关于内核编程的技术细节,但会给你指引一条获得这些知识的正确途径。如果这篇文章中的任何内容不再适用,请给文末列出的文件维护者发送补丁。转载 2013-11-13 22:26:52 · 1565 阅读 · 0 评论 -
作为一个新人,怎样学习嵌入式Linux?(韦东山)
韦老师写的,推荐大家一看 ---------------------------------------------被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语转载 2013-08-22 17:35:09 · 802 阅读 · 0 评论 -
u-Boot环境变量的设置
看到这个标题,可能觉得这个并没有什么的,其实不然,编好了u-boot了,但是如何来使用确不是那么简单的,想当初我将uboot制作出来后以为全部都搞定了,屁颠屁颠的烧到板子上后可系统就是起不来,为什么了,折腾了很久以后才发现是u-boot的环境变量设置错误,在后来的工作中,我发现一些有一定经验的人在这方面也是模模糊糊的扯不清,所以这里要讨论一下。 u-boot的环境变量是使用转载 2013-11-13 01:44:38 · 5846 阅读 · 0 评论 -
浅谈Linux下select/poll模型
在windows,管理I/O套接字的模型有阻塞和非阻塞两类,linux也一样windows select模型在widows下提供了众多非阻塞的I/O模型,如select、WSAAsyncSelect、WSAEventSelect、overlapped、completion port其中IO completion port(IOCP)提供了较好的伸缩性,应用比较广泛,说明:而sele原创 2013-07-03 09:29:05 · 1453 阅读 · 0 评论 -
void * 与 空指针NULL
3:释放指针 1)若p是一个值为NULL的空指针,且p是动态分配的,则delete p是合法的,但没有任何意义。 2)通常delete p之后,p就变成了未定义,以后都不可以再使用p了,但有些机器将p指向的地址仍然保留,但p所指向的内存已释放,成为悬垂指针,因此释放指针p之后,要将p=NULL,这样p就变成未指向任何对象的指针了。原创 2013-06-30 00:42:49 · 1102 阅读 · 0 评论 -
C-Kermit 在REHL5.1下的安装、配置及使用
1. 因为版本问题不能更新的,需要自己下载源码 地址:http://www.columbia.edu/kermit/ckdaily.html,下载ckermit源码 2. 解压缩到指定的目录 tar xzvf x.tar.gz -C ckermit 3. 进入目录进行编译下载的源码 cd ckermit make linu转载 2013-06-10 00:05:23 · 1329 阅读 · 0 评论 -
谈结构体struct 初始化多出的点号“.”,数组[]初始化多出的逗号“,”
结构体struct初始化多出的点号“.” 在阅读GNU/Linux内核代码时,我们会遇到一种特殊的结构初始化方式,该方式是书中并没有介绍过的。 这种方式称为指定初始化(designated initializer)。下面我们看一个例子:Linux-2.6.x/drivers/usb/storage/usb.c中有这样一个结构体初始化项目:static struct us转载 2013-06-13 16:44:40 · 8443 阅读 · 0 评论