|
标签:it |
提供打过实时补丁的linux.2.6.26.6内核,可在任何现有linux平台上运行。
详细指导如何在现有linux平台上移植时补丁的linux.2.6.26.6内核,能明显提升系统实时反应能力,大幅度减低中断延迟,实现了准硬实时的系统。帮助在x86系统上运行,也可以运行在arm, mips等系统架构上 。提供如何去写实时linux下的学习代码,以及官方学习资料和测试实时性的工具。
|
标签:it |
最新ucosii 2.86 TCPIP, WEBSERVER 超级 8051 开发板 + x86平台上运行另外4个主流实时操作系统
一套开发板的价值不在于硬件周围有多少的外围设备, 真正的价值在于软件以及技术支持.而软件的技术竞争核心就在于操作系统。
下面介绍两种CP命令的实现方法。
方法一:使用文件读写函数read、write。(为了让程序更直观,省略出错处理)
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
下面的代码来自 2.6.25 中的s3c2410fb.c
static struct fb_ops s3c2410fb_ops = {
};
细心的读者可以看到这些文件操作中并没有 open , read ,write mmap,
这些其实是在fbmem.c中已经注册了.具体的代码如下:
作者 jorya_txj
email: jorya_txj@hotmail.com
以下代码是linux 2.6.25 内核
static int __init
s3c24xxfb_probe(struct platform_device *pdev,
{
作者:Ronnie 手机:13761598350 E-mail:ghnghnghnghn@163.com
网络传输是当今世界的一大主流,因此网卡驱动也自然而然在各类驱动中占领了一席之地。下面我们就简短地来说一下CS8900网卡驱动移植到Linux kernel的一些问题。
一般来说,我们在编译kernel时,设备驱动的选择有两种方式:一种是直接编译到kernel里,另一种是以模块方式挂接。CS8900网卡驱动
作者: jorya_txj
email:jorya_txj@hotmail.com
大家知道cpu 处理数据的时候可能是以小端(little endian) 或者以大端(big endian)的格式.比如x86下是以小端处理数据的, 但是 SPARC and 68k 系列处理器是大端的,这样就带来一个大端转换小端的问题.
下面来看一组kernel 里的函数,怎么把cpu本地的字节序转换成大端或者小端.或者小端和大端怎么转换成cpu本地的字节序.
作者: jorya_txj
email:jorya_txj@hotmail.com
大家知道不同的体系架构,内存中的页大小是不一样的.甚至在arm不同体系架构中页的大小也是不一样的,
为了驱动的可移植性,我们怎么去做呢.kernel 里有两个参数,来描述页大小一个是PAGE_SHIFT 还有是PAGE_SIZE.
参照下面的表格看看就知道了.
|
Architecture |
PAGE_SHIFT |
PAGE_SIZE |
|
i386 |
12 |
4K |
|
MIPS |
12 |
4K |
|
Alpha |
13 |
8K |
作者: jorya_txj
email:jorya_txj@hotmail.com
作嵌入式软件工作的人,很有可能要为几个不同的平台些驱动,比如x86系统和arm系统.随之而来的问题是怎么写出几个平台间通用的驱动,或者是最大限度的去重用代码呢?
首先第一点是, 那数据基本类型重新定义,格式按照如下,这样的话不管是32为系统或者64为系统代码都可以移植.
u8
u16
u32
u64
s8
s16
s32
s64