- 博客(106)
- 资源 (9)
- 问答 (5)
- 收藏
- 关注
原创 Ubuntu更该内核启动版本
1.grep menuentry /boot/grub/grub.cfg 查看当前系统中的内核版本。3.根据grub.cfg中的内核信息,例如将第三个版本的内核调整为系统默认启动内核,2.修改/etc/default/grub中GRUB_DEFAULT=0。注意> 4中间的空格。4.保存更改的文件,执行update-grub。5.reboot后,确认更该内核版本成功。
2023-03-27 20:33:43
614
转载 VxWorks编程常用函数说明
VxWorks编程常用函数说明一、官方的Program Guide位于安装目录下:\docs\vxworks\guide\index.html二、常用的库:#include "taskLib.h" /* 任务 */ #include "msgQLib.h" /* 消息队列 */ #include "semLib.h" /* 信号量 */ #include "ioLib.h" ...
2018-07-25 21:49:34
6551
转载 中断与任务——vxworks
中断处理是整个运行系统中优先级最高的代码,可以抢占任何任务级代码运行。中断机制是多任务环境运行的基础,是系统实时性的保证。几乎所有的实时多任务操作系统都需要一个周期性系统时钟中断的支持,用以完成时间片调度和延时处理。VxWorks 提供tickAnnounce(),由系统时钟中断调用,周期性地触发内核。 为了快速响应中断,VxWorks的中断服务程序(ISR)运行在特定的空间。不同于一般的任...
2018-07-21 10:47:57
3045
转载 Vxworks 任务重启示例
/* includes */#include "vxWorks.h"#include "taskLib.h"#include "sysLib.h"int tid;/* task function */void myFunc(void){ int i; printf("Hello, I am task %d\n", taskIdSelf()); /* Print t...
2018-07-21 10:44:24
2352
转载 device_create() class_create()
前面章节“class 类 class_create class_destroy”了解了 class_create使用,这章节中介绍device_create device_destroy使用,并通过这两章节内容 自动建立备文件节点========================================================================
2017-11-25 15:41:52
476
转载 Linux内核中实现保留内存的方法
Linux中保留内存(Reserved memory)是指把系统中的一部分内存保留起来,内核不会为它建立页表,一般的应用程序无法访问到这段内存。在板卡调试、内存测试和设备DAM调试的过程中,可以运用这种办法,先验证系统在只有低端内存的情况下能否顺利启动;此外,服务器和存储系统的环境下,也可以用这种方法从大量系统内存中保留出一部分,留给特殊用途使用或者模拟诸如NVDIMM等设备。因此,有必要对Res
2017-11-05 09:31:04
14039
转载 Linux下直接读写物理地址内存
虚拟 转 物理地址 virt_to_phys( *addr );物理 转 虚拟地址 phys_to_virt( *addr );-------------------------------------------------Linux内核里提供的/dev/mem驱动,为我们读写内存物理地址,提供了一个渠道。下面讲述2种利用mem设备文件进行物理地址读写的方法,一种是设备驱动的
2017-10-29 21:50:18
1443
转载 Vxworks启动参数详解
VxWorks启动参数详解 (2011-08-10 21:47:40)转载▼标签: 磁盘引导 vxworks 引导参数 网络文件访问 it 分类: VxWorks上次讲过NI8106控制器如何从SATA磁盘启动VxWorks。但是,看来单是讲磁盘启动还不够,有同事按照里面
2017-06-26 19:59:02
5290
转载 vxworks错误码解读
Vxworks错误码解读2010-09-07 14:01:49分类:嵌入式错误状态值的分配:VxWorks的errno值表明了一个模块的错误类型,高位两字节的代表模块号,底位两个字节来表示单独的错误码。Errno的模块号从1-500,如果模块号为0,则表示用于资源的兼容性问题。应用程序可以使用大与501<<16的正数以及所有负数。错误码格式:模块编码(16bit...
2017-04-22 12:52:59
7097
转载 vx中的prjConfig.c
我更改usrconfig.c文件某函数内的内容。在开发环境(Tonardo2.2)下REBUILDER ALL, 运行Vxworks发现我的修改没有起作用(也就是说我的修改未被编译)。编译过程的前面几步中有一步就是:vxrm ..\prjComps.h ..\prjParams.h ..\prjConfig.c ..\linkSyms.c然后又自动创建了一个新的prjConfig.
2015-12-08 11:24:33
1173
转载 winxp win7 删除 workbench
1. 删掉安装目录2. 删掉快捷方式和程序里的目录3. 执行 cmd -> regedit 删掉 HKEY_LOCAL_MACHINE/SOFTWARE/FLEXlm License Manager WRSD_LICENSE_FILELM_LICENSE_FILE4. 删掉下面缓存目录以及临时文件夹C:\Documents and Settings\{use
2015-11-22 12:25:05
2258
转载 #Pragma Pack(n)与内存分配
#pragma pack(n)解释一:每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。 规则: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在off
2015-10-25 18:31:56
428
转载 VxWorks基础知识
1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。3.任务切换之前要保存上下文。4.优先级是动态的0~255,0级最高。5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务继续执行。
2015-09-20 18:29:34
1969
转载 I2C总线的仲裁机制
在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I 2C总线上的仲裁。I2C总线上的仲裁分两部分:SCL线的同步和SDA线的仲裁。1 SCL线的同步(时钟同步
2015-09-08 10:34:49
760
转载 C语言判断给定的字符串是否为合法的ip地址
#include #include // www.outofmemory.cnint main(void) { char str[31],temp[31]; int a,b,c,d; while(gets(str)!=NULL) { if(sscanf(str, "%d.%d.%d.%d ",&a,&b,&c,
2015-09-06 17:06:31
5119
转载 信号量、互斥体和自旋锁
一、信号量 信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作: (1) 测试控制该资源的信号量。 (2) 若此信号量的值为正,则允许进行使用该资源。进程将信号量减1。 (3) 若此
2015-07-31 10:34:59
372
转载 linux内核__get_free_page,kmalloc,vmalloc的区别,内核对内存的管理
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间。如下图所示: 内
2015-07-28 09:52:16
624
转载 linux内核数据结构之kfifo
本文转自:http://www.cnblogs.com/Anker/p/3481373.html1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如
2015-07-20 16:02:37
428
转载 Qt在windowsXp环境的安装和配置
网络上课本上讲了很多QT的使用方法,QT的环境配置极少讲到,可能是认为太简单了,但是这是学习QT编程的第一步,忙活了一天终于有了个头绪。赶紧记录下来。首先在qt的官方网站下载相应的文件。网址是:http://qt.nokia.com/,学习用就下载一个开源的在windowsXP环境下使用的版本。qt-sdk-win-opensource-2010.02.1.exe。是一
2015-06-15 16:57:01
3944
1
转载 虚拟机下的ubuntu12.04设置桥接网络
虚拟机下的ubuntu12.04设置桥接网络 VM版本9.0.1 build-894247 ubuntu12.04 1.设置虚拟机 选择virtual network editor VMnet0设置为桥接,bridged to 选择以太网。 dhcp不选。 2.设置ubuntu
2015-06-15 14:36:31
626
转载 TCP连接探测中的Keepalive和心跳包
1. TCP保活的必要性1) 很多防火墙等对于空闲socket自动关闭2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制. 2. 导致TCP断连的因素如果网络正常, socket也通过close操作来进行优雅的关闭, 那么一切完美. 可是有很多情况, 比如网线故障, 客户端一侧突然断电或者崩溃等等, 这些情况server并不能
2015-06-15 10:55:47
538
转载 TCP之选项TCP_KETEPALIVE
TCP之选项TCP_KETEPALIVE KEEPALIVE机制,是TCP协议规定的TCP层(非应用层业务代码实现的)检测TCP本端到对方主机的TCP连接的连通性的行为。避免服务器在客户端出现各种不良状况时无法感知,而永远等在这条TCP连接上。 该选项可以设置这个检测行为的细节,如下代码所示:int keepAlive = 1; // 非0值,开启
2015-06-15 10:38:31
485
转载 网络编程中的TCP保活
在默认的情况下,TCP连接是没有保活的心跳的。这就是说,当一个TCP的socket,客户端与服务端谁也不发送数据,会一直保持着连接。这其中如果有一方异常掉线,另一端永远也不可能知道。这对于一些服务型的程序来说,将是灾难性的后果。 所以,必须对创建的socket,启用保活心跳,即Keepalive选项。启用Keepalive 对于WIN32或者Linux平台来说,设置so
2015-06-11 09:43:48
1151
转载 TCP协议的KeepAlive机制与HeartBeat心跳包
心跳包很多应用层协议都有HeartBeat机制,通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据。使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议。心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小
2015-06-10 18:07:14
839
原创 I2C-pcf8563
linux 2.6.35.2 ——MX28添加pcf8563驱动pcf8563硬件连接到核心板引出的I2C1引脚上。修改内核源码包,添加i2c下pcf8563的驱动。通过终端命令hwclock可以操作pcf8563时钟芯片的读写,验证pcf8563驱动是否移植成功。移植i2c驱动,参考i2c驱动模型,主要涉及了以下4个源文件:rtc-pcf8563.c(时钟芯片驱动)、i2c_co
2015-06-04 09:29:49
2418
转载 Linux设备之I2C
在内核中已经提供I2C子系统,在linux系统中,I2C驱动结构如下图所示:其中从上图可以I2C由三大部分组成:1、I2C核心:I2C核心提供了总线驱动和设备驱动的注册、注销的方法,I2C通信方法,与具体适配器无关的代码以及检测设备地址的代码等。2、I2C总线驱动:对I2C硬件体系结构中适配器的实现,控制I2C总线驱动的代码,控制I2C适配器以主控方式产生开始位,停
2015-06-03 17:19:19
644
转载 Android/Linux驱动开发之使用dev_dbg调试设备驱动
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.youkuaiyun.com/gqb666/article/details/8789807,作者:gqb6661、最近在写I2C下EEPROM的驱动程序,但发现使用i2c_new_probed_device函数无法枚举到设备,于是想调试该函数(位于driver/i2c/i2c-core.c内),看到其中有些调试信息如下:
2015-05-13 13:40:53
504
转载 STM32 SPI DMA 的使用
一是想总结一下SPI总线的特点与注意点,二是总结一下SPI DMA的使用一、SPI信号线说明 通常SPI通过4个引脚与外部器件相连:MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。SCK:串口时钟,作为主设备的输出,从设备的输入NSS:从设备选择。这是一
2015-04-22 16:13:50
3484
转载 Unknown symbol gpio_direction_input解决方法
内核对gpio_direction_input导出声明如下:EXPORT_SYMBOL_GPL(gpio_direction_input);gpiolib中gpio方法导出也是使用EXPORT_SYMBOL_GPL因此,驱动如果要使用gpiolib中导出的方法,必须使用GPL授权,否则加载驱动时,就会出现“Unknown symbol gpio_xxx”MODULE
2015-04-14 10:58:15
1658
转载 c语言 void*的相关知识
比如void *P=...;那么*P表示什么?warning: dereferencing 'void *' pointer [enabled by default]error: invalid use of void expressionvoid*类型定义的指针变量只接收对象的地址,没有对象的类型概念。所以该指针变量是不能直接用“*指针变量”去访问对象的,只能经强
2015-04-07 16:59:01
3756
转载 setup_irq与request_irq的区别
题记: 前两天在做i.mx28硬件定时器的驱动,参考了BSP里带的,使用TIMER0作为系统时钟的注册代码,发现其注册时钟中断的函数使用的是setup_irq,而非常用的request_irq,觉得有些奇怪,今天网上搜了一下,大概了解了一下原因。其实,request_irq最终调用的中断注册函数也是setup_irq,只是request_irq函数中还使用了kmalloc,而kmall
2014-12-11 09:38:38
684
转载 ARM+Linux下看门狗应用
笔者在设计ARM+Linux的产品中,使用了看门狗ADM706。这款IC的定时间隔为1.6s。由于使用ARM9的内核,操作系统为Linux。整个系统完全启动时间较长,超出了看门狗的喂狗时间门限。因此在CPU能完全启动开始喂狗前,看门狗又给出了复位信号,导致CPU重启。由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。我们无法通过更改看门狗的喂狗间隔时间来满足CPU的启动要
2014-12-01 17:17:11
1974
转载 Linux内核代码中的__setup的用途
在Linux内核代码中经常会看到__setup,如下所示: __setup("nfsroot=", nfs_root_setup); 这是一个宏,它的定义在include/linux/init.h #define __setup(str, fn) __setup_param(str, fn, fn, 0) 我们这里暂不管__se
2014-11-27 10:39:39
750
转载 /usr/bin/ld: cannot find : No such file or directory解决
linux gcc编程时可能出现下面的错误:/usr/bin/ld: cannot find : No such file or directory cannot find后面什么都没有,很有可能是因为命令中间多了个空格符导致(一般在逗号后面),请仔细检查;有的话则可能是缺少某种类型的库,选择安装后即可,如下(无mysql库导致,apt-get install libmysql
2014-11-25 17:05:11
15803
转载 OTP (One Time Programmable)的介绍
随着嵌入式应用的越来越广泛,产品的安全也显得越来越重要。一方面是为了保护硬件设计,另外一方面也是为了产品本身的安全,防止被HACKED.在嵌入式系统当中,所有的代码和系统数据都是被存储在FLASH芯片内部的。FLASH芯片的特点是可多次擦写,而且掉电数据不会丢失。为了保护FLASH中的数据,越来越多的FLASH厂商在FLASH内部提供了一种特殊的寄存器:OTP寄存器。OTP=ONE TIM
2014-11-24 16:28:31
5328
转载 Linux下读写FLASH驱动——MTD设备分析
最近在学习驱动读写flash的代码部分。经历了可笑的过程:开始我知道flash用通过spi口来读写。所以就到了driver/spi 下面看相关代码。发现有个spidev.c里面有read/write/ioctl等函数。而且还有一个davinci_spi_master.以为调用spi驱动的时候会首先调用到这里,于是就想怎么在上层应用里将spidev.c里open调用到就可以了。最后修改了一些地方就在
2014-11-14 14:42:11
972
ARM定时器首次进入中断后不退出
2014-12-16
pci配置寄存器bar的访问
2014-05-21
IO端口和IO内存的区别
2014-05-19
用union实现两个int型合并为longlong型
2014-05-17
嵌入式linux core占用空间问题
2014-04-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人