当前位置:文档之家› 从零开始搭建Linux驱动开发环境

从零开始搭建Linux驱动开发环境

从零开始搭建Linux驱动开发环境
从零开始搭建Linux驱动开发环境

参考:

韦东山视频第10课第一节内核启动流程分析之编译体验

第11课第三节构建根文件系统之busybox

第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》

其他《linux设备驱动程序》第三版

平台:

JZ2440、mini2440或TQ2440

交叉网线和miniUSB

PC机(windows系统和Vmware下的ubuntu12.04)

一、交叉编译环境的选型

具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux-

gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux-

gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通

w

IP v2.0》一文中有详细的操作步骤,不再赘述。

linux

2.6.22.6_jz2440.patch组合而来,具体操作:

1. 解压缩内核和其补丁包

tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核

tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6

patch –p1 < ../linux-2.6.22.6_jz2440.patch

3. 配置

在内核目录下执行make

2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。

4. 生成uImage

make uImage

四、移植busybox

在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。

1)配置busybox

解压busybox-1.7.0,然后进入该目录,使用make

menuconfig进行配置。这里我们这配置两项

一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。

->Busybox Settings

->Build Options

二是在性能微调选项选择tab键补全功能。

->Busybox Settings

->Busybox library Tuning

->Command line editing

->Tab completion

其他的都是一些命令配置,如果你想使你的根文件系统具备哪些命令就选择那个命令。我选择的是默认的配置,一般基本的命令都帮你选上了。

2)编译busybox

修改Makefile,修改”ARCH ?= arm” 和”CROSS_COMPILE ?= arm-linux-

“,然后使用make命令进行编译。我在编译的过程出现如下错误:

../arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h:44:

error: field ‘in’ has incomplete type

解决办法:

修改arm-linux 交叉编译工具链

在 usr/local/arm/4.3.2/arm-none-linux-

gnueabi/libc/usr/include/linux/netfilter.h 头文件的开头添加缺少的头文件:#includ e

3)安装busybox

这里我们先新建一个root_fs来构建根文件系统,

[root@localhost root_fs]# ls -l

total 12

drwxr-xr-x 2 root root 4096 Oct 19 05:41 bin

lrwxrwxrwx 1 root root 11 Oct 22 11:17 linuxrc -> bin/busybox

drwxr-xr-x 2 root root 4096 Oct 22 18:43 sbin

drwxr-xr-x 4 root root 4096 Oct 22 16:52 usr

进入bin目录,可以看出这些文件全部是指向busybox的链接(除了busybox本身)。

[root@localhost root_fs]# ls bin -l

total 0

lrwxrwxrwx 1 root root 7 Oct 22 11:17 addgroup -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 adduser -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 ash -> busybox

-rwxr-xr-x 1 root root 0 Oct 23 13:20 busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 cat -> busybox

lrwxrwxrwx 1 root root 7 Oct 22 11:17 catv -> busybox

五、安装glibc库

在root_fs下新建lib目录,再把arm-linux-

交叉编译链下的lib文件拷贝到我们root_fs下的lib目录下。我使用

六、构建/etc,/dev,proc目录

/etc和/dev是一个根文件系统必须的。/etc文件需包含init进程启动所需的配置文件inittab.dev目录下需包含init进程启动需要的两个设备文件console 和null。proc 目录要进来挂载内核的虚拟proc文件系统。这样对进程的一些命令如ps才会有

效。

1) 在dev目录下执行mkdir etc dev proc

2) 在etc下新建文件inittab

我们在里面写入两行配置信息。

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

第一行是用来启动脚本文件rcS,之所以这样做,是因为我们可以利用这个文件

来引导系统启动时为我们做一个工作比如说挂载文件系统或者启动一些其他的应用程序的。

第二个是启动shell解释器sh

3)配置脚本文件rcS

在etc下新建init.d目录,然后在init.d目录下新建rcS文件,再给rcS文件加上可执行权限。

#!bin/sh

mount –a

在rcS里面执行mount –

a命令,于是该命令就会根据etc下fstab文件来挂载相应的目录。

4)配置fstab文件

在etc目录下新建fstab文件,然后在该文件内写入

# device mount-point type options dump fsck order

proc /proc proc defaults 0 0

第一个参数是设备,第二个是挂载点,第三个是设置。其余的写两个0。

5)构建dev目录下的设备文件。

由于console和null设备是init进程启动所必须的,所以要建立这两个设备文件,进入dev目录,然后执行

mknod console c 5 1

mknod null c 1 3

如果这两个设备文件没有手工mknod创建就在内核启动时会出现错误:Warning: unable to open an initial console.

注意一定是在dev下创建这两个设备文件。我因为一时糊涂在etc目录下创建了这两个文件,调了大半天才找到原因。还有在cd etc或者cd

完成了上述步骤,将根文件系统制作成yaffs2镜像烧到flash就能正常启动了。

七、配置mdev来支持热插拔

busybox使用sbin目录下的一个mdev来支持热插拔,什么叫做支持热插拔?就是你linux系统启动时插入一个设备,则mdev会在dev目录下自动给你创建设备文件。

在/busybox源码中的mdev.txt有介绍。我截取部分如下

Mdev has two primary uses: initial population and dynamic updates. Both

require sysfs support in the kernel and have it mounted at /sys. For dynamic updates, you also need to have hotplugging enabled in your kernel.

Here's a typical code snippet from the init script:

[1] mount -t sysfs sysfs /sys

[2] echo /bin/mdev > /proc/sys/kernel/hotplug

[3] mdev -s

Of course, a more "full" setup would entail executing this before the previous

code snippet:

[4] mount -t tmpfs mdev /dev

[5] mkdir /dev/pts

[6] mount -t devpts devpts /dev/pts

The simple explanation here is that [1] you need to have /sys mounted before

a device is added or removed so that the device node can be created or destroyed. Then you [3] seed /dev with all the device nodes that were created while the system was booting.

For the "full" setup, you want to [4] make sure /dev is a tmpfs filesystem (assuming you're running out of flash). Then you want to [5] create the

/dev/pts mount point and finally [6] mount the devpts filesystem on it.

当我们在flash中使用使,则只需要前面[1][2][3]步就行了。即

[1] mount -t sysfs sysfs /sys

[2] echo /bin/mdev > /proc/sys/kernel/hotplug

[3] mdev -s

于是我们在etc/init.d/rcS文件改为

mount –a

echo /bin/mdev > /proc/sys/kernel/hotplug

mdev -s

将ect/fstab文件改为

# device mount-point type options dump fsck order

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

再在root_fs下新建一个sys目录。

八、完善根文件系统

1)将etc目录下的inittab加上

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

::restart:/sbin/init

来指定系统执行特殊操作命令(shultdown、restart、ctrlaltdel)时做的附加工作。

2)在root_fs下新建mnt、tmp、root目录

注意:

在制作根文件系统的过程中不要去移动root_fs目录下的由busybox创建的bi n sbin

usr和linuxrc,因为这些目录和文件很多都是链接文件。移动可能会导致内核启动时出现如下错误:

request_module: runaway loop modprobe binfmt-0000

我就被这个问题搞了好久!后来我是从一个好的根文件系统把这些文件和目录拷贝过来才行。切记切记!

ARM-Linux移植之(四)——根文件系统构建》,特此感谢!

实验一mini2440裸板驱动开发环境搭建.

实验一mini2440裸板驱动开发环境搭建 讲师:杨行 【实验目的】 1、了解minicom配置串口通信参数的过程,掌握利用minicom进行传输文件方法 2、了解网络文件系统nfs的配置,掌握利用nfs进行文件的传输和异地运行目标板程序 3、掌握tftp的使用方法 【实验原理】 一、安装编译器 1. mkdir /usr/local/arm 2. tar xjvf arm-linux-gcc-4.4. 3.tar.bz2 –C /usr/local/arm 3. vim /etc/profile + PATH=/usr/local/arm/4.4.3/bin:$PA TH 4. source /etc/profile 5. arm-linux-gcc -v 注意:1 Ubuntu 14.04 64位系统无法运行32位可执行文件,需要安装一个32位兼容库lib32z1 2Ubuntu 12.04 64位系统安装ia32-libs 3sudo apt-get install libstdc++6 4sudo apt-get install lib32stdc++6 二、minicom的使用 1. 安装:sudo apt-get install minicom 2. 配置:minicom -s 3. 使用: 命令: ctrl a + q quit ctrl a + w lineWrap ctrl a + z help 1、串口通信参数的设置 确认USB转串口工具是否已经连接到电脑上,如果连接到电脑上,则: ls /dev/ttyUSB0

如果已经确认了ttyUSB0已经存在,则: 首先运行minicom,由于minicom是通过串口来工作的,所以要通过minicom程序来对串口通信参数进行设置。启动minicom的设置窗口:在linux的终端中输入“minicom –s”,然后,按下回车键。 spring@spring-virtual-machine:~$ sudo minicom -s “-s”选项调出配置信息。下面显示的就是配置的菜单。

Linux搭建J2EE开发环境(完整版)

Linux下搭建Web开发环境 经过本人的不屑努力终于成功在RedHat Enterprise Linux 4下成功搭建了Web开发环境,本文主要讲解在RHEL4下安装JDK、Tomcat、MySQL、Oracle、Apache服务器、PHP以及Flex 环境。我采用虚拟机方式安装。 必备工具: VMware-workstation-6.5或更高版本 RedHat Enterprise Linux 4的iso文件,共4个 SSHSecureShellClient,用于远程连接Linux jdk-6u18-linux-i586.bin,可以从sun网站下载 mysql-5.1.41.tar.gz,MySQL的Linux源码分发包 SQLyog Enterprise,MySQL的可视化操作工具 10201_database_linux32.zip,Oracle的Linux版本 10201_client.zip,Oracle在Win下的客户端,注意根据操作系统选择 PL/SQL Developer,操作Oracle的可视化工具 PHP相关组件 ?php-5.2.14.tar.gz ?freetype-2.1.10.tar.gz ?gd-2.0.35.tar.gz ?jpegsrc.v6b.tar.gz ?libpng-1.2.29.tar.gz ?libxml2-2.6.2.tar.gz ?xpm-3.4k.tar.gz ?zlib-1.2.3.tar.gz httpd-2.2.16.tar.gz,Apache服务器 flex_sdk_3.5.0.12683.zip,Flex SDK 搭建Linux环境 启动VMWare,出现如下界面

windows驱动开发和调试环境搭建

Windows驱动开发和环境搭建 【文章标题】: Windows驱动开发和调试的环境设置 【文章作者】: haikerenwu 【使用工具】: VC6.0,VMware6.0.3,Windbg 【电脑配置】: 惠普笔记本xp sp3 (一)VMWare安装篇 VMWare的安装一路Next即可,关于其序列号,百度一下就能找到,虚拟机安装完成之后,需要安装操作系统,我在虚拟机中安装的是windows xp sp2系统。 点击“文件”----“新建”----“虚拟机” 进入新建虚拟机的向导,配置虚拟系统参数

选择虚拟系统文件的兼容格式(新手推荐选择默认选项) 按照默认设置继续点击下一步,选择好您需要的操作系统,此处我选择的是Windows XP Prefessional。 设置虚拟机名称和虚拟操作系统安装路径,我单独空出来一个F 盘,将虚拟机和虚拟操作系统全部装在该盘。

配置网络模式(推荐选择NA T,一般主机不用做任何的设置虚拟机就可以利用主机上网)。 配置虚拟磁盘的容量。在这里可以直接单击完成,来完成基本操作设置,磁盘默认空间是8GB,用户可以根据自己的实际使用情况来调整大小,也可以自定义分区。

操作完成之后,在“VM”菜单下有个“setting。。。”菜单,点击此菜单,在CD-ROM中选择合适的选项,我使用的是Use ISO image 选项,将我的xp sp2操作系统的ISO映像路径设置好,安装操作系统。点击ok之后,启动虚拟机,即开始安装操作系统,安装过程跟普通装机过程相同。安装完成之后,启动操作系统,然后在VM菜单下点击“Install VMWare Tools”,把虚拟操作系统的驱动装好。 (二)VMWare设置篇

linux系统环境部署

Jdk安装 1. 登录Linux,切换到root用户 su root 获取root用户权限,当前工作目录不变(需要root密码) 或 sudo -i 不需要root密码直接切换成root(需要当前用户密码) 2. 在usr目录下建立java安装目录 cd /usr mkdir java 3.将jdk-8u60-linux-x6 4.tar.gz拷贝到java目录下 cp /mnt/hgfs/linux/jdk-8u60-linux-x64.tar.gz /usr/java/ 4.解压jdk到当前目录 tar -zxvf jdk-8u60-linux-x64.tar.gz

得到文件夹jdk1.8.0_60 5.安装完毕为他建立一个链接以节省目录长度(我没用这一步) ln -s /usr/java/jdk1.8.0_60/ /usr/jdk 6.编辑配置文件,配置环境变量 vim /etc/profile 添加如下内容:JAVA_HOME根据实际目录来 JAVA_HOME=/usr/java/jdk1.8.0_60 CLASSPATH=$JAVA_HOME/lib/ PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH 7.重启机器或执行命令:source /etc/profile sudo shutdown -r now 8.查看安装情况 java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode)

Linux下搭建C#开发环境

文章来源https://www.doczj.com/doc/2d11192062.html,/articles/116249.htm 如果平时主要开发控制台类、组件、后端服务等程序,可以尝试在Linux类操作系统下搭建C#.Net 开发环境,好处是在Linux环境里你不用担心朋友或同事拿你的电脑来玩魔兽世界或者一不小心被装了一大堆流氓软件;-)先看看本篇文章最终效果:在Ubuntu里跑的开发环境MonoDevelop: 1、Linux发行版的选择 在Linuxux操作系统里只要安装Mono环境就可以开发C#程序,Linux的众多发行版 RedHat/CentOS/Fedora、OpenSuse、Debian、Ubuntu都可以安装 Mono。 鉴于目前Ubuntu 容易安装、界面漂亮而且比较多人用作桌面环境,所以这里推荐使 用Ubuntu 10.04 。官方网站是:https://www.doczj.com/doc/2d11192062.html,/ 在官方网站下载回来的是一个光盘映像文件(ISO格式),这里需要注意的是Ubuntu 共有4个不同版本的ISO文件:Desktop版、Alternative版、Netbook版、 Server版。一般下载Desktop 就可以了。如果你想通过网络启动安装程序或者使用硬盘安装则需要下载Alternative版。 如果你的电脑硬件配置比较低(内存少于等于 512MB),还可以下载一个轻量级的衍生版:Xubuntu (https://www.doczj.com/doc/2d11192062.html,/),如果你的电脑只有256MB内存,那还可以下载另一个衍生版Lubuntu (https://www.doczj.com/doc/2d11192062.html,/),这个更加轻量级,平时系统启动后只占用 70~100MB内存。 2、安装Ubuntu 安装Ubuntu 的方法非常简单,跟装 WinXP差不多,只需点5,6次“下一步”过10来分钟就可以

Windows驱动开发培训

Windows驱动开发培训 培训流程: 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造\\ 可以链接进去 2、安装WDK,参考相关文档,熟悉WDK的内容\\ 可以链接进去 二、Windows驱动开发\\ 可以链接进去 一、基础知识 在开始驱动开发之前,您应该知道操作系统原理以及驱动程序是如何在操作系统中进行工作的,了解这些基本原理将有助于您做出正确的设计决策并简化您的开发过程。 1、了解Windows操作系统构造 (1)培训目标 深入了解Windows操作系统的系统结构以及工作原理 (2)培训内容 阅读书籍《深入解析Windows操作系统》的第3、4、6、7、9章,重点关注第九章“I/O系统” (3)培训任务 ①掌握Windows操作系统的系统结构 ②理解ISR、IRP、IRQL、DCP等概念的含义 ③了解注册表的用法,掌握注册表数据的查看和修改方法 ④了解进程和线程的内部机理以及线程的调度策略 ⑤了解I/O系统的内容,理解I/O请求以及I/O处理过程 注:以上相关内容,请在一周内完成。

2、安装WDK,参考相关文档,熟悉WDK的内容 (1)培训目标 了解WDK的安装过程,熟悉WDK的编译环境,掌握如何使用WDK的相关帮助文档;了解WDM驱动程序的基本结构 (2)培训内容 ①.阅读文档\\10.151.131.12\book\windows\MSWDM.chm,掌握WDM驱动程序的基本结构以及基本的编程技术。 ②.参考WDK的帮助文档:WDK documentation ,了解WDK的基本内容 (3)培训任务 ①理解分层驱动结构的含义,掌握设备和驱动程序的层次结构 ②理解“驱动对象”和“设备对象”的概念 ③理解2个基本例程:DriverEntry 和addDevice ④了解IRP的结构以及IRP处理的流程 ⑤初步了解I/O的控制操作 注:以上相关内容,请在一周内完成。 二、Windows驱动开发 学习如何基于WDK进行驱动程序的开发 1、培训目标 (1)学会根据WDK开发一个基本的Windows驱动程序和测试程序 (2)学会利用不同的IOCTL方式在内核模式和用户模式之间进行通讯 (3)学会如何在内核模式下和用户模式下访问注册表 (4)利用WinDbg跟踪程序,学会使用WinDbg进行调试 2、培训内容 (1)阅读\src\general\ioctl中的示例代码 (2)build并运行应用程序和驱动程序

Linux服务器环境搭建(设置)

Linux是一个性能优异、安全的操作系统,许多大型的Web应用都是基于Linux作为服务器,所以系统的学习一下Linux操作系统是非常有必要的。本文不以Linux基础为例,主要以Linux服务器端开发环境搭建为主,适合有一定Linux基础的朋友。 本文采用的Linux环境为RedHat Enterprise Linux Server4。本文主要讲解以下内容: Java开发环境的安装和配置(JDK安装、环境变量的配置) Tomcat服务器安装和配置(Tomcat安装、环境变量配置) 基于源码的MySQL数据库安装(此处之所以采用源码编译安装,为了后面的PHP 环境做准备) Oracle数据库的安装(包括服务器端和客户端的安装) Apache服务器的安装和配置(主要用来运行PHP程序) PHP环境安装和配置 Flex开发环境搭建 从上面可以看到,我们这篇教程要讲解的内容很多,所以我们需要准备如下的必备环境: 必备工具: VMware-workstation-6.5或更高版本 RedHat Enterprise Linux 4的iso文件,共4个 SSHSecureShellClient,用于远程连接Linux jdk-6u18-linux-i586.bin,可以从sun网站下载 mysql-5.1.41.tar.gz,MySQL的Linux源码分发包 SQLyog Enterprise,MySQL的可视化操作工具 10201_database_linux32.zip,Oracle的Linux版本 10201_client.zip,Oracle在Win下的客户端,注意根据操作系统选择 PL/SQL Developer,操作Oracle的可视化工具 PHP相关组件 ?php-5.2.14.tar.gz ?freetype-2.1.10.tar.gz ?gd-2.0.35.tar.gz ?jpegsrc.v6b.tar.gz ?libpng-1.2.29.tar.gz ?libxml2-2.6.2.tar.gz ?zlib-1.2.3.tar.gz ?curl-7.15.0.tar.gz httpd-2.2.16.tar.gz,Apache服务器 flex_sdk_3.5.0.12683.zip,Flex SDK

驱动SYS开发总结 - stretch的专栏 - CSDNBlog

驱动SYS开发总结 1.驱动简介 1.1.驱动是什么 计算机的外部设备需要和计算机进行数据交换,生产外部设备的厂家如何使计算机和自己的设备交换数据呢,就是通过驱动程序,从设备中读入到计算机中,早期的Win3.1,Win9x设备驱动是vxd,Win NT是kdm, Win2k 统一发展成wdm模式。 1.2.sys文件 sys文件是驱动程序的可执行代码,其扩展名为.sys,驱动程序安装后保存在windows/system32/drivers目录中。 对于PnP设备,在设备插入后,sys文件会被windows装载到内存中,系统线程调用sys中的函数来和设备进行通信。 1.3.inf文件 inf文件是安装设备驱动程序时必须使用的文件,其扩展名为 .inf,驱动程序安装后保存在windows/inf目录中。 系统使用一个扩展名为INF的文本文件来控制与安装驱动程序相关的大部分活动。INF文件应该由驱动程序开发人员随驱动程序一起提供。通过INF文件可以告诉操作系统哪一个文件需要复制到用户硬盘上,应该增加或修改哪一个注册表项,如此等等。 inf中提供产品设备的产品id,以及对应的sys文件名,驱动class名, class guid, https://www.doczj.com/doc/2d11192062.html,b-client driver HOST 与DEVICE, ENDPOINT与PIPE 我们进行的USB驱动开发大多数是usb-client driver,系统厂商大多数都已经把USB类驱动做好,我们则是在类驱动之上开发针对自己设备的驱动,习惯上称做usb-client driver,其在整个软件构架中地位如下:UHCD--USBD--USB CLIENT DRIVER--DLL OR APP usb-client driver仍然遵守WDM模型,是WDM驱动。因为要支持PnP,所以要很小心的处理自己的资源以及IRP, 随时准备处理拔出或者插入设备的情况; 电源处理不当也会使系统无法唤醒。 需要了解的知识:wdm,usbdi,our usedevice, wdm: 目标: a, 能提供接口函数, b, 能实现pnp,电源消息处理,wmi,i/o等处理, usbdi: urb,irp,等时,中断,控制,批传输的概念

linux lamp环境搭建教程

linux 环境搭建教程 [url=https://www.doczj.com/doc/2d11192062.html,]https://www.doczj.com/doc/2d11192062.html,[/url] 一、系统约定 软件源代码包存放位置:/usr/local/src 源码包编译安装位置(prefix):/usr/local/software_name 脚本以及维护程序存放位置:/usr/local/sbin MySQL 数据库位置:/var/lib/mysql(可按情况设置) Apache 网站根目录:/var/www/wwwroot(可按情况设置) Apache 虚拟主机日志根目录:/var/logs/httpd/(可按情况设置) Apache 运行账户:apache:apache 二、系统环境部署及调整 1. 检查系统是否正常 # more /var/log/messages(检查有无系统级错误信息) # dmesg(检查硬件设备是否有错误信息) # ifconfig(检查网卡设置是否正确) # ping [url=https://www.doczj.com/doc/2d11192062.html,]https://www.doczj.com/doc/2d11192062.html,[/url](检查网络是否正常) 2. 关闭不需要的服务 # ntsysv 以下仅列出需要启动的服务,未列出的服务一律推荐关闭: atd crond irqbalance microcode_ctl network sendmail sshd syslog 3. 重新启动系统 # init 6 4. 配置vim # vi /root/.bashrc 在alias mv='mv -i' 下面添加一行:alias vi='vim' 保存退出。 # echo 'syntax on' > /root/.vimrc 5. 使用yum 程序安装所需开发包(以下为标准的RPM 包名称) # yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kernel 6. 定时校正服务器时钟,定时与中国国家授时中心授时服务器同步 # crontab -e 加入一行: */30 * * * * ntpdate 210.72.145.44 7. 源码编译安装所需包(Source) (1) GD2 # cd /usr/local/src

windows下搭建Linux开发环境

windows下搭建Linux开发环境 以前一直都是安装的双系统来运行windows和linux,当想学习一下linux编程的时候就跑到linux下面去,做其他事情的时候就转到windows下面来。虽然在linux 下也学会了使用wine,也能够运行source insight看看程序,或者打开winamp听听歌,不过毕竟不是windows环境,还是有很多不方便的地方,winamp最小化了居然还原的时候桌面上没有图标;采用source insight打开linux源码,中文注释却全是乱码,好不容易转好了字体,打开来,字体大小不一,根本无法查看,最后只好放弃。 无意间,用vmware安装好了ubuntu的图形化界面,才发现一切原来如此简单。以前虽然也用过vmware,不过以前电脑配置实在是太差,在vmware下面安装linux 的图形化界面能安装成功,却无法使用,只好望洋兴叹。这次终于应用vmware把所有东西都搞定了,可以让我远离双系统了,也节省下了40G的硬盘空间。 1)vmware安装Ubuntu 很简单,感觉都没什么好说的,先安装vmware,windows安装程序,傻瓜式的安装,easy。然后到ubuntu网站去下载live cd或者dvd版本都行,个人建议下载live cd就可以了,安装以后基本的系统环境和常用软件都有了,当然IDE环境是没有的;不过我下载的dvd版本好像安装的时候也没有把IDE环境安装上去,还是我自己后来安装的,因此live cd和dvd在初始安装时,差别不大。 2)设置ubuntu环境 在vmware下面安装过的ubuntu图形界面,分辨率好像是800*600的,即使是全屏,也只能占这么大的屏幕,不是一般的郁闷;就像你面前有一顿美食,偏偏是锁在一个大铁笼子里的,而你的手能够到的却只有一两个菜,那个郁闷劲,确实让人难受。不过也没有关系,因为你没有安装vmware tools,所以你无法享受全屏带来的好处。安装过vmware tools以后,你就发现屏幕能根据具体大小进行自动调整了。不过我在安装vmware tools时,是出错了的,有一步编译出错了,不过最后还是安装成功了,只是在windows和linux之间共享的文件不能相互访问。不过,平时访问文件比较少,而且Ctrl+C/Ctrl+V,已经文件的复制、粘贴都能正常使用,因此对于我来说,这点缺憾我能接受,由于安装的ubuntu环境只是简单的办公环境,都是一些基本软件,惟一能派上用场的可能就是open office,而开发环境方面,只有最基本的一些软件。个人比较习惯于用IDE来开发程序,因为可以省去很多其他的麻烦,比如手动编写makefile文件,运行cvs命令进行cvs操作,或者是采用gdb 命令进行调试,这样可以更专注于程序编写。关于IDE开发还是采用最简单的vi开发,gcc编译,gdb调试,仁者见仁,智者见智,没有好坏,关键看个人喜好。 与我而言,我安装好ubuntu以后,需要安装一个最适合的IDE环境,以便于开发;在ubuntu下面安装软件,现在也是越来越方便了,有图形化的添加/删除界面,很是方便,惟一需要说明的是找一个合适的软件源,否则你会发现安装软件真是一件郁闷的事情,看着你的电脑以400Bps的速度从网络上面下载软件包时,估计你恨不得把网络给拆了,顺便把你的网络运营商给臭骂一通,其实这一切的根源在于你没有找到合适的软件源,我采用的是电信的ADSL线路,找的是lupa网络的源,也是电信的线路,速度不是一般的快,真的是很幸福,源地址为:deb https://www.doczj.com/doc/2d11192062.html,/ubuntu intrepid main universe;如果你是教育网的网络或

Windows驱动开发入门

接触windows驱动开发有一个月了,感觉Windows驱动编程并不像传说中的那么神秘。为了更好地为以后的学习打下基础,记录下来这些学习心得,也为像跟我一样致力于驱动开发却苦于没有门路的菜鸟朋友们抛个砖,引个玉。 我的开发环境:Windows xp 主机+ VMW ARE虚拟机(windows 2003 server系统)。编译环境:WinDDK6001.18002。代码编辑工具:SourceInsight。IDE:VS2005/VC6.0。调试工具:WinDBG,DbgView.exe, SRVINSTW.EXE 上面所有工具均来自互联网。 对于初学者,DbgView.exe和SRVINSTW.EXE是非常简单有用的两个工具,一定要装上。前者用于查看日志信息,后者用于加载驱动。 下面从最简单的helloworld说起吧。Follow me。 驱动程序的入口函数叫做DriverEntry(PDRIVER_OBJECT pDriverObj,PUNICODE_STRING pRegisgryString)。两个参数,一个是驱动对象,代表该驱动程序;另一个跟注册表相关,是驱动程序在注册表中的服务名,暂时不用管它。DriverEntry 类似于C语言中的main函数。它跟main的差别就是,main完全按照顺序调用的方法执行,所有东西都按照程序员预先设定的顺序依次发生;而DriverEntry则有它自己的规则,程序员只需要填写各个子例程,至于何时调用,谁先调,由操作系统决定。我想这主要是因为驱动偏底层,而底层与硬件打交道,硬件很多都是通过中断来与操作系统通信,中断的话就比较随机了。但到了上层应用程序,我们是看不到中断的影子的。说到中断,驱动程序中可以人为添加软中断,__asm int 3或者Int_3();前者是32位操作系统用的,后者是64位用的。64位驱动不允许内嵌汇编。下面是我的一个helloworld的源码:

从零开始搭建Linux驱动开发环境

参考: 韦东山视频第10课第一节内核启动流程分析之编译体验 第11课第三节构建根文件系统之busybox 第11课第四节构建根文件系统之构建根文件系统韦东山书籍《嵌入式linux应用开发完全手册》 其他《linux设备驱动程序》第三版 平台: JZ2440、mini2440或TQ2440 交叉网线和miniUSB PC机(windows系统和Vmware下的ubuntu12.04) 一、交叉编译环境的选型 具体的安装交叉编译工具,网上很多资料都有,我的那篇《arm-linux- gcc交叉环境相关知识》也有介绍,这里我只是想提示大家:构建跟文件系统中所用到的lib库一定要是本系统Ubuntu中的交叉编译环境arm-linux- gcc中的。即如果电脑ubuntu中的交叉编译环境为arm-linux-

二、主机、开发板和虚拟机要三者互通 w IP v2.0》一文中有详细的操作步骤,不再赘述。 linux 2.6.22.6_jz2440.patch组合而来,具体操作: 1. 解压缩内核和其补丁包 tar xjvf linux-2.6.22.6.tar.bz2 # 解压内核 tar xjvf linux-2.6.22.6_jz2440.tar.bz2 # 解压补丁

cd linux_2.6.22.6 patch –p1 < ../linux-2.6.22.6_jz2440.patch 3. 配置 在内核目录下执行make 2410_defconfig生成配置菜单,至于怎么配置,《嵌入式linux应用开发完全手册》有详细介绍。 4. 生成uImage make uImage 四、移植busybox 在我们的根文件系统中的/bin和/sbin目录下有各种命令的应用程序,而这些程序在嵌入式系统中都是通过busybox来构建的,每一个命令实际上都是一个指向bu sybox的链接,busybox通过传入的参数来决定进行何种命令操作。 1)配置busybox 解压busybox-1.7.0,然后进入该目录,使用make menuconfig进行配置。这里我们这配置两项 一是在编译选项选择动态库编译,当然你也可以选择静态,不过那样构建的根文件系统会比动态编译的的大。 ->Busybox Settings ->Build Options

DDK驱动开发笔记

DDK驱动开发笔记 1、windows驱动分为NT式驱动和WDM式驱动,前者为非即插即用,后者为即插即用驱 动。需要头文件分别为NTDDK.h和WDM.h 2、驱动的入口函数均为extern "C" NTSTA TUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath),它由I/O管理器负责调用,前参数为传递进来的驱动对象,后参数为Unicode字符串,指向此驱动的注册表。 3、驱动程序向windows的I/O管理器注册一些回调函数,回调函数是由程序员定义的函数, 由操作系统负责调用,只要把地址告诉操作系统即可如:pDriverObject->DriverUnload=HelloDDKUnload; 4、使用CreateDevice函数创建驱动设备对象如:CreateDevice(pDriverObject);返回 NTSTA TUS类型 5、KdPrint是一个宏,用于打印输出信息,在Checked中会使用DbgPrint代替,在Free版 本中无效果,用法和TRACE一致。 6、Windows的设备管理是使用线性链表进行管理,每一个节点记录了设备对象的地址,每 次要对指定驱动进行操作,就必须先遍历设备对象链表。 7、设备对象函数NextDevice域记录下一个设备对象的地址,IoDeleteDevice用于删除设备 对象如:IoDeleteDevice(pDevExt->pDevice),IoDeleteSymbolicLink用于删除设备符号链接。 8、DDK环境编译驱动源程序,需要使用两个自己创建的脚本makefile和Sources,最好使 用二进制文本格式,makefile的内容固定为:!INCLUDE $(NTMAKEENV)\makefile.def。 sources文件记录了驱动的名称、驱动类型、编译输出目录、include目录、指定源文件。 编译好的文件会再工程目录的objchk_wxp_x86\i386文件夹里生成.sys文件。 9、对于使用其他编译环境,只能使用VS编译环境,vc6编译环境只能支持到win2000的 DDK。 10、配置VS+DDK+DDKWizard: 11、使用DriverMonitor安装驱动,对于NT驱动,在设备管理器中默认是隐藏的(可 更改),本软件用于测试驱动。 12、WDM中使用AddDevice回调函数创建设备对象并由PNP(即插即用plug and play) 管理器调用,然后设置对IRP_MJ_PNP的IRP(I/O Request Packages)的回调函数,对PNP的IRP处理是WDM和NT驱动的重大区别之一。在WDM程序中,大部分卸载工作放在对IRP_MN_REMOVE_DEVICE的IRP的处理函数中处理。 13、在WDM的驱动程序中,创建设备对象需要驱动程序向系统注册一个称作 AddDevice的例程,由PNP调用如:NTSTA TUS HelloAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject); 对象->AddDevice=HelloAddDevice; 14、WDM驱动的安装需要使用INF文件安装,其中编译的时候其Sources文件有所不 同。要安装WDM驱动,要先为驱动程序编写一个inf文件,该文件描述了驱动的操作硬件设备信息和驱动的一些信息,并存放在源文件的同一目录下。Inf的信息是提供给SDK使用的。 15、安装WDM驱动,由于该驱动是一个虚拟设备,因此需要使用添加硬件的方式使 用inf安装。快速安装的话可以使用DriverStudio的EzDriverInstaller工具直接安装。16、Windows系统的设计思想采用CS架构,内核到硬件之间使用HAL(硬件抽象层) 作为过渡。Native API穿越了用户层和内核层。为能将其他操作系统程序移植到windows

LINUX系统中环境搭建

LINUX系统中服务器环境搭建 一:软件介绍 Apache:世界使用排名第一的Web服务器软件。 Tomcat:是运行在java环境(JDK)下的web服务器,只要有java环境就可以运行。 PHP:是一种HTML内嵌式的语言,是一种在服务器端执行的脚本语言,(PHP是服务端脚本,而HTML 是客户端脚本。服务器将php解析后生成HTML,服务器对HTML文件不做解析,然后通过网络将HTML传到客户端(直接传HTML的代码内容),再由浏览器解析HTML。任何语言写出来的网页最终都被解析成HTML语言, 然后返回客户端,被浏览器解析,浏览器只认html) MySQL:是一个开放源码的数据库管理系统。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 二:防火墙关闭 1、Selinux是强制访问控制(MAC)系统(一种防火墙) 命令getenforce检查selinux是否已禁用,如果不是disabled或setenforce 0 则修改/etc/selinux/config文件,将状态改成disabled,保存并重启linux!! 2、检查防火墙是否禁用,命令/etc/init.d/iptables status或(service iptables status)查看状态,如果没禁 用则: 临时关闭方式:命令/etc/init.d/iptables stop或(service iptables stop)禁用。 永久关闭方式:命令chkconfig --level 35 iptables off,重启之后防火墙关闭。 三:安装前的准备工作: 将安装文件传到虚拟机linux上,可以采用两种方式 1:使用连接器secureFX进行上传。 2:在windows的机器上创建一个共享文件夹,例如:sharedoc,将安装文件放入sharedoc。然后在linux里面运行命令:mount -t cifs -o username=user1,password=password //ip/sharedoc /mnt/share 注意:user1使用windows机器具有共享权限的用户名,password使用用户对应的密码,ip 替换成windows机器的真实IP。/mnt/share这个表示linux上的某个路径,可以更改为任意 实际存在的文件夹,建议将要安装的源文件放到/opt/source路径下。 b、如果要自定义安装的话,手动创建软件安装的目录。 比如:mkdir /opt/lamp/apache 安装apache用 mkdir /opt/lamp/mysql 安装mysql用 mkdir /opt/lamp/php 安装php用

WINDOWS 7 配置驱动开发环境(wdk7.60)

WINDOWS 7 配置驱动开发环境(wdk7.60) 1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1) 2. 新建VC 控制台项目(选择为空项目) 3. 新建项目配置“driver” ,点击下拉按钮-点击(配置管理器) 输入名称(Driver Debug)点击确定就可以了,其他的不要动哦!

完成后的效果! 点击确定按钮之后呈现出来的画面 鼠标右击工程选择属性,会弹出以下窗口!

4. 设置VC++路径 <我把wdk安装在E盘下> a. 配置可执行文件目录:E:\WinDDK\7600.16385.1\bin\x86; b. 配置包含目录:E:\WinDDK\7600.16385.1\inc\ddk E:\WinDDK\7600.16385.1\inc\ E:\WinDDK\7600.16385.1\inc\api c. 配置库目录: E:\WinDDK\7600.16385.1\lib\win7\i3865 新建C/C++文件不然无C/C++设置选项 <刚开始我们创建了一个空的项目所以项目里没有c++文件,现在要做的就是在空的项目-源文件-添加一个新建项c++文件> 常规 目标文件扩展名:.sys //必选 6. 设置C/C++选项 常规选项卡 1 调试信息格式(C7 兼容(/Z7) //可选 2 警告等级(2 级(/W2) //可选 3 将警告视为错误(是(/wx) //可选 优化选项卡 优化(禁用/Od) //可选 预处理器

预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 //必选如果是Release,那么可想而知,不需要DBG=1 代码生成 启用最小重新生成:否//可选 基本运行时检查:默认值//可选 运行时库:多线程调试(/MTd) 或多线程(/MT) //建议选<本人选择的是多线程调试(/MTd)> 缓冲区安全检查:否//可选 (可避免出现LINK : error LNK2001: 无法解析外部符号__security_cookie) 高级 调用约定__stdcall(/Gz) //必选 7. 链接器设置 常规 启用增量链接:否(/INCREMENTAL:NO) //建议选上 忽略导入库:是// 可选 ( 设置为此值时,必须在附加库目录中加:E:\WinDDK\7600.16385.1\lib\win7\i3865 这样项目就不会依赖IDE 环境的设置) 如果否( 设置为此值时,将依赖IDE 的环境的相关设置) 输入 附加依赖项 ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB //必选 //NT式驱动ntoskrnl.lib WDM式驱动wdm.lib ( HalXXX 函数在Hal.lib,WmiXXX 函数在wmilib.lib ,NdisXXX函数在ndis.lib ) ( 必要时需要增加微软的标准库MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) ) ( 如果源码中有source 文件,那么该文件的TARGETLIBS 字段会列出该项目需要的库) 忽略所有默认库:是(/NODEFAULTLIB) //必选 清单文件: 启用用户账户控制(UAC)否//必选 不然会出现>LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC” 调试: 生成调试信息是(/DEBUG) //可选 生成映像文件:是(/MAP) //可选 映像文件名:$(TargetDir)$(TargetName).map //可选 系统(System) 子系统: 控制台(/SUBSYSTEM:CONSOLE) //必选 堆栈保留大小:4194304 //可选

linux开发环境的建立(好)

下面,我们要建立的开发环境采用如下方式: 1. 主操作系统,windows XP 2. 虚拟机版本:VMware-workstation-5.0.0-13124 3. 虚拟机上操作系统:RedHat9.0 下面我们来详细讲解具体的安装: 一,虚拟机的安装与运行 直接运行VMware-workstation-5.0.0-13124.exe,按提示安装即可。 安装完后在桌面或开始菜单中就会多出一项,如: 点击图标运行,即进入VMware的主界面: 点击新建虚拟机图标进入向导界面:

点下一步进入: 就采用默认的典型类型创建虚拟机,点下一步进入: 在这一步选linux,版本选Red Hat Linux,点下一步进入:

这里输入你要给虚拟机取的名字,已经保存的路径,点下一步进入网络类型选择对话框: “Use bridged networking“即“使用桥接网络”允许虚拟机拥有和物理主机同一个网段的IP地址,通过桥接到物理主机所在的网络,来访问该局域网。“Use network address translation[NAT]“即“使用网络地址翻译”允许虚拟机拥有一个同物理主机所在网络不同的IP地址,通过NAT来实现对物理主机所在网域的访问。“Use host only networking“即“使用Host-only网络”,虚拟机与物理主机通过虚拟私有网络进行连接,只有同为Host-only模式下的且在一个虚拟交换机的连接下才可以互相访问,外界无法访问。这里希望虚拟机能直接访问物理主机所在的网络,故选择“Use bridged networking”,点下一步进入磁盘容量设置界面:

02.ESP32教程-linux开发环境搭建

操作系统:Ubuntu32 1、打开shell,输入mkdir esp创建esp目录;输入mkdir download,创建download文件夹,输入ls检查是否创建成功 2、输入cd download/进入download目录; 输入wget https://https://www.doczj.com/doc/2d11192062.html,/dl/xtensa-esp32-elf-linux32-1.22.0-59.tar.gz下载linux32为系统下的工具链 3、输入tar -xzf xtensa-esp32-elf-linux32-1.22.0-59.tar.gz解压工具链,会在download目录下产生一个xtensa-esp32-elf文件夹,然后输入mv xtensa-esp32-elf ~/esp/将此文件夹移动到~/esp/目录下 4、输入 export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin添加环境变量。 alias get_esp32="export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin" 使环境变量永久生效 添加环境变量。 输入nano ~/.bashrc,编辑bashrc文件,粘贴 export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin到bashrc文件的最后一行,这样就可以将工具链bin目录添加到环境变量中,按ctr+x,退出编辑输入y确认。这样电脑重启后环境变量依然有效

5、输入cd ~/esp/进入esp目录,输入git clone --recursive https://https://www.doczj.com/doc/2d11192062.html,/espressif/esp-idf.git 克隆esp_idf固件库 6、输入cd ~/esp/esp-idf 进入esp_idf目录,输入git submodule update –init 初始化sdk。 7、输入cd examples/01_hello_world/进入历程中得hello_world工程。输入 export IDF_PATH=~/esp/esp-idf,添加环境变量。 添加环境变量。 输入nano ~/.bashrc,编辑bashrc文件,粘贴 export IDF_PATH=~/esp/esp-idf到bashrc文件的最后一行,这样就可以将工具链bin目录添加到环境变量中,按ctr+x,退出编辑输入y确认。这样电脑重启后环境变量依然有效 输入 8、请将你的USB转串口工具插入电脑,然后选择虚拟工具栏的设备->USB->CP2102的设备(此处因芯片不同而不同,选择正确的工具即可),千万不要选错了,最开始可能只有一个错误的选项,我多插拔几次,重启了几次虚拟机正确的选项才出来,而且不可选,重启虚拟机

Windows驱动程序开发环境配置

Windows驱动程序开发笔记 一、WDK与DDK环境 最新版的WDK 微软已经不提供下载了这里:https://https://www.doczj.com/doc/2d11192062.html,/ 可以下并且这里有好多好东东! 不要走进一个误区:下最新版的就好,虽然最新版是Windows Driver Kit (WDK) 7_0_0,支持windows7,vista 2003 xp等但是它的意思是指在windows7操作系统下安装能编写针对windows xp vista的驱动程序, 但是不能在xp 2003环境下安装Windows Driver Kit (WDK) 7_0_0这个高版本,否则你在build的时候会有好多好多的问题. 上文build指:首先安装好WDK/DDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库 如果你是要给xp下的开发环境还是老老实实的找针对xp的老版DDK吧,并且xp无WDK 版只有DDK版build自己的demo 有个常见问题: 'jvc' 不是内部或外部命令,也不是可运行的程序。 解决办法:去掉build路径中的空格。 二、下载 WDK 开发包的步骤 1、访问Microsoft Connect Web site站点 2、使用微软 Passport 账户登录站点 3、登录进入之后,点击站点目录链接 4、在左侧的类别列表中选择开发人员工具,在右侧打开的类别:开发人员工具目录中找到Windows Driver Kit (WDK) and Windows Driver Framework (WDF)并添加到您的控制面板中 5、添加该项完毕后,选择您的控制面板,就可以看到新添加进来的项了。 6、点击Windows Driver Kit (WDK) and Windows Driver Framework (WDF),看到下面有下载链接,OK,下载开始。下载后的文件名为: 6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso将近600M大小。

相关主题
文本预览
相关文档 最新文档