- 博客(24)
- 资源 (1)
- 收藏
- 关注
转载 文章标题
专题1:Makefile工程管理 <div class="article_manage clearfix"> <div class="article_l"> <span class="link_categories"> 标签: <a href="http://www.csd
2017-08-05 17:12:23 310 1
转载 欢迎使用CSDN-markdown编辑器
对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对。。实现 因为我自己当初想转载的时候却不知道该怎么转载,所以学会了之后就把方法写出来,帮助那些想转载却不知道该怎么转载的人(大神勿笑)。
2017-08-05 17:07:22 199
原创 mmap系统调用
void* mmap ( void * addr , size_t len , int prot , int flags , int fd , off_t offset )内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。addr:指定映射的起始地址, 通常设为N
2015-09-03 10:25:16 480
转载 memdev.c字符设备驱动分析(转载)
下面来分析一个简单的字符设备驱动,和LDD3中的scull类似,实现在一段内存中模拟字符设备的读和写操作。源代码来自国嵌视频 memdev.h 自定义头文件******************************************************************************#ifndef _MEMDEV_H_#define _MEM
2015-08-30 21:16:54 696
原创 并发与竞态
并发:多个执行单元同时被执行。竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问导致的竞争状态例:if (copy_from_user(&(dev->data[pos]), buf, count))ret = -EFAULT;goto out;假设有2 个进程试图同时向一个设备的相同位置写入数据,就会造成数据混乱。处理并发的常用技术是加锁或者互
2015-08-29 17:29:13 384
原创 linux驱动调试技术
对于驱动程序设计来说,核心问题之一就是如何完成调试。当前常用的驱动调试技术可分为:• 打印调试(printk)• 调试器调试(kgdb)• 查询调试1、合理使用printk#ifdef PDEBUG#define PLOG(fmt,args...) printk(KERN_DEBUG "scull:"fmt,##args)#else#define PLOG(
2015-08-29 17:23:02 797
原创 字符设备驱动设计
设备号:主设备号用来标识与设备文件相连的驱动程序。次设备号被应用程序用来辨别操作的是哪个设备。**主设备号用来反映设备类型****次设备号用来区分同类型的设备**Q: 内核中如何描述设备号?A: dev_t**其实质为unsigned int 32位整数,其中高12位为主设备号,低20位为次设备号。Q: 如何从dev_t中分解出主设备号?A: MAJOR(d
2015-08-29 10:30:52 458
原创 Linux字符设备驱动程序编译进入内核的方法
将驱动程序直接编译进入内核1、将.c文件移入driver/char里面2、修改Kconfig文件3、在driver/char文件内部修改Makefile文件
2015-08-29 10:23:55 953
原创 进程地址空间
虚拟内存linux操作系统采用虚拟内存管理技术,使得每个进程都有独立的进程空间地址,该空间的大小为3G,用户看到和接触的都是虚拟地址,无法看到实际的物理地址。利用这种虚拟地址不但能起到保护操作系统的作用,而且更重要的事用户程序可使用比实际物理内存更大的地址空间。linux将4G的虚拟地址空间分为两个部分----用户空间与内核空间。用户空间从0到0xbfffffff,内核空间从3G到4G。用
2015-08-27 17:17:48 477
原创 Linux内存管理
内存是Linux内核所管理的最重要的资源之一,内存管理子系统是操作系统中最重要的部分之一。对于立志从事内核开发的工程师来说,熟悉linux的内存管理系统非常重要。物理地址:指出现在CPU地址总线上的寻址物理内存的地址信号,是地址变换的最终结果线性地址(虚拟地址):逻辑地址:出现在汇编程序中的地址cpu要将一个逻辑地址转换为物理地址,需要两步:首先CPU利用段式内存管
2015-08-27 17:13:33 489
原创 嵌入式文件系统
Linux支持多种文件系统类型,包括ext2、ext3、vfat、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,linux引入了虚拟文件系统VFS,为各类文件系统提供一个统一的应用编程。根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合使用Initramfs制作根文件系统1.配置linux内核,支持initramfs2.进入制作好
2015-08-27 15:12:53 556
原创 配置内核 Makefile:1449: *** mixed implicit and normal rules. Stop.
修改前:416行 config %config: scripts_basic outputmakefile FORCE 修改后:416 行 %config: scripts_basic outputmakefile FORCE 修改前:1449 行 / %/: prepare scripts FORCE
2015-08-27 10:41:18 594
原创 嵌入式linux内核制作
1. make clean清除之前编译的文件2.配置内核x86: make menuconfigarm:make menuconfig ARCH = arm3.编译内核x86:make bzImagearm:make uImage ARCH = arm CROSS_COMPILE=arm-linux-
2015-08-26 20:35:12 333
原创 uboot简介及命令
printenv:查看环境变量setenv:添加、修改、删除环境变量setenv name value 添加,修改setenv name 删除saveenv 保存环境变量tftp:网络文件下载ping通后tftp c0000000 uImage 命令 地址 文件
2015-08-26 16:15:26 414
原创 Bootloader介绍
BootLoader的stage1通常包括一下步骤:1.硬件设备(CPU内部)初始化2.为加载BootLoader的stage2准备RAM空间3.拷贝BootLoader的stage2到RAM空间中4.设置好堆栈 (配置C语言环境)5.跳转到stage2的C入口点stage2通常包括以下步骤1.初始化本阶段所用到的硬件设备2.将内核映像和根文件系统映像从fla
2015-08-26 15:39:31 352
原创 内核模块参数设计
通过module_param指定模块参数,模块参数用于在加载模块时传递参数给模块module_param(name, type, perm)name:名字type:类型perm:权限#include #include MODULE_LICENSE("GPL");MODULE_AUTHOR("EmbedSky");MODULE_DESCRIPTION(
2015-08-26 15:26:44 378
原创 内核模块编译
第一步,编写模块#include #include MODULE_LICENSE("GPL"); //许可权限证明,GPL开源的协议MODULE_AUTHOR("EmbedSky");//作者MODULE_DESCRIPTION("Hello world module");//描述static int hello_init(void){
2015-08-26 11:16:37 410
原创 linux内核配置入门
1.网上下载linux源码包,我使用的是linux2.6.29进入linux2.6.29包后,使用make menuconfig 进行图形配置在ubuntu下,若不能 成功打开可以使用以下方法解决:sudo apt-get update 先更新软件sudo apt-get install build-essentialsudo apt-get ins
2015-08-25 16:39:29 315
原创 打开smb的几个步骤(非开机启动)
1.关闭linux防火墙运行命令: /etc/init.d/iptables stop2.重启samba服务运行命令: /etc/init.d/smb restart3.关闭Selinux,通过执行命令setenforce permissive将其关闭
2015-08-23 15:36:17 2496
原创 Linux信号通讯编程(国嵌总结)
信号通讯流程为: ①进程A/内核选择信号 ②发送信号 ③进程B接收信号并处理 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号有: ①SIGKILL:杀死进程 ②SIGSTOP:暂停进程 ③SIGCHLD:子进程停止或结束时用来通知父进程 常用到的函数有:kill函数原型:int kill
2015-08-22 17:08:02 454
转载 对串级PID和单级PID的理解(基于匿名微型六轴)
匿名四轴前段时间开源了,还出来不少好文章,转载给大家共享/******************** (C) COPYRIGHT 2014 ANO Tech **************************** 文件名 :ANO_FlyControl.cpp* 描述 :飞行控制****************************************************
2015-08-07 22:42:51 13705 1
转载 PID调节经验
Kp: 比例系数 ----- 比例带(比例度)P:输入偏差信号变化的相对值与输出信号变化的相对值之比的百分数表示 (比例系数的倒数)T:采样时间Ti: 积分时间Td: 微分时间 温度T: P=20~60%,Ti=180~600s,Td=3-180s 压力P: P=30~70%,Ti=24~180s, 液位L: P=20~80%,Ti=60~300s
2015-08-05 20:44:55 639
转载 PID算法通俗教程
首先帮大家解决一下什么是PID调节,为什么就要这样的疑惑。PID是比例,积分,微分的英文单词的首字母的简称。 下面举个例子说明一下PID,让大家有个感官的认识,。一个人闭眼走路,假设他知道自己离目的地有100米远,那么他就可以以每秒一米一步这样的速度走向目的地,100米刚刚好是100步,这是一个非常理想化的现象。假设他不知道目的地有多远,目的地可能是1000米也有可
2015-08-05 20:43:15 611
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人