- 博客(67)
- 资源 (1)
- 收藏
- 关注
转载 uclinux 与 linux的区别
这两天看公司的一个产品 用的是arm7 系统用的uclinux 发现程序的内存管理方面有些看不懂,还有程序几乎用的全是线程。查过资料后才恍然明白,原来没有mmu 所以uclinux对多进程的支持非常有限。不过这是比较老的版本。新版本已经支持了!?-----------------------------------------------------------------------
2013-10-25 09:13:15
359
转载 Kconfig
Kconfig note:在hardware/intel/linux-2.6/arch/x86/configs/*****defconfig 里面出现的配置,如:CONFIG_X86_32=y ,X86_32, 必须在某个Kconfig 里面与预先定义。也就是说:Kconfig 是定义的地方,可以有个default值***defconfig文件时重新为具体某个项目 配置这些值的地方
2013-09-18 14:22:55
522
转载 Bootm的流程分析
Bootm的流程分析一、在开始之前先说明一下bootm相关的东西。 1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把f
2013-09-07 10:35:36
372
原创 Uboot work sequence< colibri_pxa270 >
Uboot work sequence1. Start.s _start: b reset àreset: àbl _main à2. Crt0.sENTRY(_main) àbl board_init_f àboard_init_f()à run all the function ininit_sequence_fldr
2013-09-04 17:23:53
316
转载 Comments on the MISRA C coding guidelines
Comments on the MISRA C coding guidelinesIntroductionMany organisation create coding standards for software development. The document produced byMISRA 'Guidelines for the use of the C Language i
2012-08-14 15:00:32
657
转载 MISRA C Rules __官方
MISRA C RulesThe following is a summary of the MISRA C rules. This document is not a definitive list these rules,which are only and completely defined in "MISRA Guidelines for the use of the C lan
2012-08-14 14:58:24
582
转载 学习MISRA C之一:“安全第一”的C语言编程规范——(转)
编者按: C语言是开发嵌入式应用的主要工具,然而C语言并非是专门为嵌入式系统设计,相当多的嵌入式系统较一般计算机系统对软件安全性有更苛刻的要求。1998 年,MISRA指出,一些在C看来可以接受,却存在安全隐患的地方有127处之多。2004年,MISRA对C的限制增加到141条。 嵌入式系统应用工程师借用计算机专家创建的C语言,使嵌入式系统应用得以飞速发展,而MISRAC是嵌入式系统应用工程
2012-08-14 14:56:29
1558
转载 MISRA--作为工业标准的C编程规范——(转)
MISRA (The Motor Industry Software Reliability Association 汽车工业软件可靠性联会) 是位于英国的一个跨国汽车工业协会,其成员包括了大部分欧美汽车生产商。其核心使命是为汽车工业提供服务和协助,帮助厂方开发安全的、高可靠性的嵌入式软件。这个组织最出名的成果是所谓的MISRA C Coding Standard,这一标准中包括了127条C语言编
2012-08-14 14:55:14
941
转载 学习MISRAC之六:构建安全的编译环境——(转)
预处理是编译环境处理C 程序的第一个环节,但往往最先被程序员忽略。这份看似只是由编译环境做的简单工作,其实也是机关重重。通过介绍MISRA C 与预处理相关的规则,希望读者能够更准确地认识编译器的预处理过程,避免出错。无论是自定义函数还是由编译环境提供的标准库函数,如果使用不当,都会存在安全隐患。能不能保证函数被正确的定义、声明和调用,关乎到整个程序的成败。这里介绍MISAR C 中涉
2012-08-14 14:53:48
461
转载 学习MISRAC之五:准确的程序流控制——(转)
程序的执行流程是由条件判断、跳转和循环构成的,没有任何一个程序会缺少程序流的控制。那么像if 、for 、while 、switch 等这些程序员无比熟悉的语句也存在隐患吗? 事实上,C 语言是很灵活的,这种灵活性给程序员编写代码带来了很多便利,但同时也带来了很多容易导致混淆的表达。这些表达完全符合C 语言标准,但有时程序员也难以发现自己犯了错误,最终的结果是使程序进入错误的执行流程。即使程序
2012-08-14 14:52:48
392
转载 学习MISRA C之四:防范表达式的失控
在C 语言中,表达式是最重要的组成部分之一,几乎所有的代码都由表达式构成。表达式的使用如此广泛,读者也许会产生这样的疑问,像+ 、- 、3 、/ 、& & 这样简单的运算也会出现问题吗? 程序员在编写表达式时,往往带有一些不良的习惯。即使是编写很简单的表达式,这些不良习惯也可能造成隐患,这个小小的隐患甚至可能引起整个系统的崩溃。实际上,在程序调试过程中,表达式中存在的大部分隐患皆来源于程序员的
2012-08-14 14:51:32
531
转载 学习MISRA C之三:指针结构体联合体的安全规范
指针赋予了C编程最大的灵活性;结构体使得C程序整齐而紧凑;联合体在某些要求注重效率的场合有精彩的表现.这三个要素是C语言的精华.然而精华并不意味着完美。C语言在赋予程序员足够的灵活性的同时,也给了程序员许多犯错的机会。所以,有必要关注指针,结构体和联合体的实现细节,从而保障程序的安全性。在此,第一部分介绍MISRA-C:2004中与指针相关的部分规则,第二部分讲解结构体和联合体的操作
2012-08-14 14:49:48
681
转载 学习MISRA C之二:跨越数据类型的重重陷阱
数据类型是编程语言中最基本的构成元素,但却是最易被忽略的一环,程序员愿意把几乎100%的精力都花在算法研究、程序流控制等大环节上,却很少在数据类型问题上反复斟酌。 细节决定成败,一个螺丝钉的失误可能导致一个飞行器的毁灭,一个数据类型的错误同样可以让庞大的软件系统崩溃。 MISRA—c中关于数据类型的规则主要分为两个方面。一是数据类型相关的编程风格;二是不同数据类型
2012-08-14 14:48:03
509
转载 MISRA 2004规则
MISRA 2004规则Jerry整理出处:汽车工业软件可靠性联会最后更新时间:2005-7-20转载请注明:来自Sawin系统分析之窗MISRA (The Motor Industry Software Reliability Association 汽车工业软件可靠性联会) 是位于英国的一个跨国汽车工业协会,其成员包括了大部分欧美汽车生产商。其核心使命是为汽车工业提供服务和
2012-08-14 14:39:57
2055
转载 uImage和zImage的区别
zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,
2012-06-18 16:10:29
381
转载 U_BOOT命令格式说明
在u-boot的doc目录下的README/commands文件说明:U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")其中,name: is the name of the commad. THIS IS NOT a string.maxargs: the maximumn numbers of arguments t
2012-06-18 13:31:52
1311
转载 module_init, fs_initcall .
ipv4内核初始化相关已有 6249 次阅读 2009-11-4 17:55所在文件:net/ipv4/af_inet.c初始化函数定义:static int __initinet_init ( void ) 初始化函数调用:fs_initcall ( inet_init ); //#define
2012-06-08 15:31:01
1607
转载 .depend作用
Make 和 include-文件 C 源码的开头经常有一系列被包含的头文件,例如 stdio.h。有一些是系统级的 头文件,有一些是你正在写的项目的头文件:#include #include "foo.h"int main(.... 要确定在你的 foo.h 被改变之后,这个文件也会被重 新编译,就要在你的 Makefile 这样写:foo: foo.c fo
2012-05-24 17:03:29
384
转载 ARM 链接配置.lds文件学习
本文由Jacky原创,来自http://blog.chinaunix.net/u1/58780/showart.php?id=462971对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {.
2012-05-24 14:56:29
830
转载 u-boot 1.1.6 start.S 代码学习
u-boot 1.1.6 start.S 代码学习/*参考了别人的一些笔记,看完了启动代码。本文档记录在看代码时碰到的困难,将这些曾经困扰的问题记录下来,以备今后之用。分析时不重要的代码被删除了。*/.globl _start_start: b reset ldr pc, _undefined_instruction ldr pc, _
2012-05-24 14:53:53
521
原创 linux 编译工具
AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ldCC = $(CROSS_COMPILE)gccCPP = $(CC) -EAR = $(CROSS_COMPILE)arNM = $(CROSS_COMPILE)nmLDR = $(CROSS_COMPILE)ldrSTRIP = $(CROSS_COMPILE)strip
2012-05-24 14:52:16
246
原创 linux cross reference
http://lxr.oss.org.cn/plain/ident?v=2.6.35&i=setup_timer
2012-05-18 09:55:33
326
转载 INIT_DELAYED_WORK() 函数剖析
INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,说什么make的时候遇见这么一个错误:
2012-05-18 09:17:22
674
原创 android中执行shell脚本
新建一个shell脚本文件test.sh,注意开头一行 #/system/bin/sh(开头有空格)cmd9500 -e eth0 -c DUMP_PHY 将可执行文件cmd9500和shell脚本文件test.sh拷贝到/system/bin下面adb shell进入,然后运行./test.sh就可以了 要循环一直跑的话,如下: #!/system/bin/sh
2012-05-02 11:15:21
816
转载 linux驱动开发之内核线程
Linux内核线程编程方法 内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成--独立运行在内核空间的标准进程。内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,mm指针被设置为NULL;它只在 内核空间运行,从来不切换到用户空间去;并且和普通进程一样,可以被调度,也可以被抢占。实际上,内核线程只能由其他内核线程创建,在现有的内核线程中创
2012-04-09 14:41:43
1593
转载 Linux内核wait_queue深入分析
wait queue和work queue工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。 前几天在看驱动的时候碰到了等待队列,上网去搜了一下,再结合代码看了一下,深有体会.在 kernel 里,wait_q
2012-04-09 11:29:41
894
转载 进程上下文和中断上下文的区别
内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。 系统的两种不同于行状
2012-04-05 11:54:14
226
转载 linux 内核同步机制-自旋锁与信号量及其区别
内核同步措施为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。 我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux从单处理器到对称多处理器的过度;伴随着从非抢占内核到抢占内核的
2012-03-29 16:23:13
309
转载 Linux系统中的信号量(semphore)与互斥体(mutex)
Linux系统中的信号量(semphore)与互斥体(mutex)http://www.embexperts.com/viewthread.php?tid=31两者最大区别:信号量可以允许多个线程进入临界区,而互斥体只允许一个线程进入临界区。本贴将描述信号量与互斥体之间的细微区别以及在实际的代码设计中如何使用它们。信号量在2.6.26中的定义如下:struct semaph
2012-03-29 14:58:19
647
转载 大端(高位在低地址)--小端(低位在低地址)
一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:MoST Significant Bit ------- 最高有效位 LSB:Least Significant Bit ------- 最低有效位 大端模式(big-
2012-03-13 17:17:07
2809
转载 Writeback和Writethrough区别
Writeback和Writethrough区别2009-03-05 15:10Write caching 或 write-throughwrite-through意思是写操作根本不使用缓存。数据总是直接写入磁盘。关闭写缓存,可释放缓存用于读操作。(缓存被读写操作共用)Write caching可以提高写操作的性能。数据不是直接被写入磁盘;而是写入缓存。从应用程
2012-03-07 09:50:05
13838
转载 linux的Framebuffer
1 基于嵌入式Linux的GUI系统发展概况 当前流行的商业化的GUI系统包括WindowsCE和SymbianOS等。这些GUI性能出众,一般都提供完整的解决方案,对Java、多媒体的支持较好,使用它们可以很方便地构建自己的嵌入式系统,形成产品,尽可能地缩短开发周期。但这些都是商业化产品,使用它们不可避免地要付出昂贵的授权费用,没有公开源代码,用户也不能很自由地定制自己的产品。Linu
2012-03-02 16:01:39
766
转载 arm linux kernel 从入口到start_kernel 的代码分析
http://bbs.chinaunix.net/thread-2039668-1-1.html
2012-03-01 09:55:00
235
转载 Heap/BSS 溢出机理分析
[前言: ][ 这篇文章主要是基于w00w00发表的: ][ w00w00 on Heap Overflows ][By: Matt Conover (a.k.a. Shok) & w00w00 Security Team ][-------------------------------------------------------------------
2012-02-28 22:28:39
301
转载 kmalloc 详解
使用 kmalloc() 函数时,可分配的大小为 32 x PAGE_SIZE 。大多数系统中 PAGE_SIZE 的大小为 4096,因此超过 131072 字节就不能分配内存。 flag 参数表示指定分配内存的特性,它的值可为以下几个: (1) GFP_KERNEL kmalloc() 函数中使用的代表性参数,请求动态内存总是分配成功。利用该值使用kmalloc() 函数时,若内核
2012-02-28 11:20:55
438
转载 Msm7227平台I2C驱动分析
http://blog.csdn.net/tjd0227/article/details/5753606 Msm7227平台I2C驱动分析 滕景东 目录1. 摘要 32. 简介 33. I2C架构 34. I2C总线初始化 45. I2C适配器驱动 56. I2C设备驱动 97. 用户空间驱动支持 128. 数据传输框架
2012-02-23 11:07:31
466
原创 SensorBase.cpp分析
int SensorBase::openInput(const char* inputName) { //inputName == proximity_sensor int fd = -1; const char *dirname = "/dev/input"; char devname[PATH_MAX]; char *filename; DIR
2012-02-22 20:51:36
712
原创 MSM7227A使用gpio-I2C的修改点
(scene:蓝牙设备使用了普通gpio来模拟i2c接口,使用了管脚76和80)1. Modem部分修改文件:1) TLMMBspMsm_XXX.h该文件定义了各个gpio的默认设置,如是否上拉,需要确认BSP_GPIO_OUT_76 = GPIO_CFG(76, 0, BSP_GPIO_OUTPUT, BSP_GPIO_NO_PULL, BSP_GPI
2012-02-22 20:30:08
994
转载 DEVICE_ATTR 和 sysfs 的东西 -- sysfs_create_group
说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)函数宏DEVICE_ATTR内封装的是__ATTR(_nam
2012-02-22 13:51:42
3552
原创 android sendor 2
Android sensor subsystem overview · Application Framework o Sensor Applications uses the Sensor application framework to get the sensor data. It communicates with C++ layer through sensor Java
2012-02-15 17:33:16
1188
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人