当前位置:首页 >> 信息与通信 >>

嵌入式Linux下3G模块的驱动和应用


嵌入式 Linux 下 3G 模块的驱动和应用 1、 开发资源

1.1、硬件资源: ZTE-mf637u(中国联通) ZTE-mu351(中国移动)

1.2、软件资源: 1.2.1、usb-modeswitch-1.1.3 libusb-0.1.12.tar.gz usb-modeswitch-1.1.3.tar.bz2

1.2.2、ppp-2.4.4 libpcap-0.9.8.tar.gz ppp-2.4.4.tar.gz

1.2.3、wvdial 1.2.3.1、wvdial-1.54.0(arm-linux-gcc 3.4.1) zlib-1.2.5.tar.bz2 openssl-0.9.7g.tar.gz openssl-0.9.7g-fix_manpages-1.patch wvstreams-4.0.1.tar.bz2

wvstreams-4.0.1-tcl84-1.patch wvdial-1.54.0.tar.gz 1.2.3.2、wvdial_1.60.4(arm-linux-gcc 4.2.2) zlib-1.2.5.tar.bz2 openssl-0.9.8n.tar.gz openssl-0.9.8n-fix_manpages-1.patch wvstreams-4.6.1.tar.gz wvdial_1.60.4.tar.gz

2、

Linux 开发环境

2.1、主机环境 2.1.1、主机 linux 系统 Fedora Core 6

2.1.2、主机编译环境 2.1.2.1、gcc -v Using built-in specs. Target: i386-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile

--enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux Thread model: posix gcc version 4.1.1 20061011 (Red Hat 4.1.1-30)

2.1.2.2、/usr/local/arm/3.4.1/bin/arm-linux-gcc -v Reading specs from /usr/local/arm/3.4.1/lib/gcc/arm-linux/3.4.1/specs Configured with: /work/crosstool-0.27/build/arm-linux/gcc-3.4.1-glibc-2.3.2/gcc-3.4.1/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/usr/local/arm/3.4.1 --with-headers=/usr/local/arm/3.4.1/arm-linux/include --with-local-prefix=/usr/local/arm/3.4.1/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long Thread model: posix gcc version 3.4.1

2.1.2.3、/usr/local/arm/4.2.2/usr/bin/arm-linux-gcc -v Using built-in specs. Target: arm-unknown-linux-gnueabi Configured with: /home/scsuh/workplace/coffee/buildroot-20071011/toolchain_build_arm/gcc-4.2.2/configu re --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-unknown-linux-gnueabi --enable-languages=c,c++ --with-sysroot=/usr/local/arm/4.2.2-eabi/

--with-build-time-tools=/usr/local/arm/4.2.2-eabi//usr/arm-unknown-linux-gnueabi/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --with-gmp=/usr/local/arm/4.2.2-eabi//gmp --with-mpfr=/usr/local/arm/4.2.2-eabi//mpfr --disable-nls --enable-threads --disable-multilib --disable-largefile --with-arch=armv4t --with-float=soft --enable-cxx-flags=-msoft-float Thread model: posix gcc version 4.2.2

2.2、开发板环境 2.2.1、CES-6410 开发平台 Samsung S3C6410X, ARM1176JZF-S 128MB, Mobile DDR SDRAM USB HOST:一个 USB HOST 接口,USB2.0 全速(12Mbits/s)

3、

Linux 应用软件的编译

3.1、usb-modeswitch-1.1.3 [root@localhost cdma]# tar xzf libusb-0.1.12.tar.gz [root@localhost cdma]# cp libusb-0.1.12 libusb-0.1.12-arm [root@localhost cdma]# cd libusb-0.1.12-arm [root@localhost libusb-0.1.12-arm]#./configure --prefix=/works/cdma/install --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ [root@localhost libusb-0.1.12-arm]# make [root@localhost libusb-0.1.12-arm]# make install

[root@localhost libusb-0.1.12-arm]# cd ..

[root@localhost cdma]# tar xjf usb-modeswitch-1.1.3.tar.bz2 [root@localhost cdma]# cp usb-modeswitch-1.1.3 usb-modeswitch-1.1.3-arm [root@localhost cdma]# cd usb-modeswitch-1.1.3-arm [root@localhost usb-modeswitch-1.1.3-arm]# 修改 Makefile CC 改为 CC CFLAGS 改为 CFLAGS += -Wall -l usb -I/works/cdma/install/include -L/works/cdma/install/lib = arm-linux-gcc += -Wall -l usb = gcc

修改 usb_modeswitch.c // 改为 readConfigFile("/etc/usb_modeswitch.setup"); [root@localhost usb-modeswitch-1.1.3-arm]# make [root@localhost usb-modeswitch-1.1.3-arm]# make install [root@localhost usb-modeswitch-1.1.3-arm]# cd .. [root@localhost cdma]# readConfigFile("/etc/usb_modeswitch.setup");

3.2、ppp-2.4.4 [root@localhost cdma]# tar xzf libpcap-0.9.8.tar.gz [root@localhost cdma]# cp libpcap-0.9.8 libpcap-0.9.8-arm [root@localhost libpcap-0.9.8-arm]# ./configure --prefix=/works/cdma/install --host=arm-linux --with-pcap make: *** No rule to make target `pcap-yes.o', needed by `libpcap.a'. Stop. 修改 Makefile PSRC = pcap-yes.c 改为 PSRC = pcap-linux.c [root@localhost libpcap-0.9.8-arm]# make [root@localhost libpcap-0.9.8-arm]# make install [root@localhost libpcap-0.9.8-arm]# cd ..

[root@localhost cdma]# tar xzvf ppp-2.4.4.tar.gz [root@localhost cdma]# cd ppp-2.4.4 [root@localhost ppp-2.4.4]# ./configure --host=arm-linux vi pppd/Makefile

LIBS

+= -lpcap

CFLAGS += -DPPP_FILTER 改为 LIBS += -lpcap -L../../libpcap-0.9.8

CFLAGS += -DPPP_FILTER -I../../libpcap-0.9.8

[root@localhost ppp-2.4.4]# make CC=arm-linux-gcc

3.3、wvdial 3.3.1、wvdial-1.54.0 [root@localhost wvdial-1.54.0]# export PATH=/usr/local/arm/3.4.1/bin:$PATH [root@localhost wvdial-1.54.0]# tar xjf zlib-1.2.5.tar.bz2 [root@localhost wvdial-1.54.0]# cd zlib-1.2.5 [root@localhost zlib-1.2.5]#./configure --prefix=/works/wvdial-1.54.0/install 修改 Makefile CC = arm-linux-gcc CPP=arm-linux-gcc -E AR=arm-linux-ar rc RANLIB=arm-linux-ranlib [root@localhost zlib-1.2.5]# make [root@localhost zlib-1.2.5]# make install

[root@localhost wvdial-1.54.0]# tar xzf openssl-0.9.7g.tar.gz [root@localhost wvdial-1.54.0]# cd openssl-0.9.7g [root@localhost openssl-0.9.7g]# patch -Np1 -i ../openssl-0.9.7g-fix_manpages-1.patch [root@localhost openssl-0.9.7g]#./Configure --prefix=/works/wvdial-1.54.0/install os/compiler:arm-linux-gcc [root@localhost openssl-0.9.7g]# make [root@localhost openssl-0.9.7g]# make install [root@localhost openssl-0.9.7g]# cd ..

[root@localhost wvdial-1.54.0]# tar xjf wvstreams-4.0.1.tar.bz2 [root@localhost wvdial-1.54.0]# cd wvstreams-4.0.1 [root@localhost wvstreams-4.0.1]# patch -Np1 -i ../wvstreams-4.0.1-tcl84-1.patch 修改 configure with_openssl=no 改为 with_openssl=yes (有两处) [root@localhost wvstreams-4.0.1]# ./configure --prefix=/works/wvdial-1.54.0/install --host=arm-linux CFLAGS=-I/works/cdma/install/include LDFLAGS=-L/works/cdma/install/lib/ --with-zlib=/works/cdma/zlib-1.2.5 --with-openssl=/works/cdma/openssl-0.9.8n --without-dbus --with-pam=no --with-tcl=no --with-qt=no

[root@localhost wvstreams-4.0.1]# make linking libwvutils.so... /usr/lib/libz.so: could not read symbols: Invalid operation collect2: ld returned 1 exit status make: *** [libwvutils.so] Error 1 [root@localhost wvstreams-4.0.1]# arm-linux-gcc -L./xplc -L/works/cdma/install/lib/ -L./xplc -L. -g -Wl,-soname,libwvutils.so.4.0 -shared -o libwvutils.so utils/strcrypt.o utils/verstring.o utils/wvaudioencoder.o utils/wvbase64.o utils/wvbdbhash.o utils/wvcrash.o utils/wvdiriter.o utils/wvgzip.o utils/wvhashtable.o utils/wvhex.o utils/wvmagiccircle.o utils/wvmatrix.o utils/wvqdbmhash.o utils/wvrateadjust.o utils/wvserialize.o utils/wvshmzone.o utils/wvstringtable.o utils/wvsubproc.o utils/wvtest.o utils/wvwordwrap.o libwvbase.so -lsupc++ -lgcc_eh

[root@localhost wvstreams-4.0.1]# make [root@localhost wvstreams-4.0.1]# vi wvrules.mk XX_LIBS := $(XX_LIBS) $(shell $(CC) -lsupc++ -lgcc_eh 2>&1 | grep -q "undefined reference" && echo " -lsupc++ -lgcc_eh") 改为 XX_LIBS := $(XX_LIBS) $(shell $(CC) -lsupc++ -lgcc_eh 2>&1 | grep -q "undefined reference" && echo " -lz -lcrypt -lsupc++ -lgcc_eh") [root@localhost wvstreams-4.0.1]# make compiling crypto/wvtripledes.o... crypto/wvtripledes.cc: In member function `virtual bool WvTripleDESEncoder::_encode(WvBuf&, WvBuf&, bool)': crypto/wvtripledes.cc:108: error: cannot convert `const unsigned char*' to `

unsigned char (*)[8]' for argument `1' to `void DES_ecb3_encrypt(unsigned char (*)[8], unsigned char (*)[8], DES_key_schedule*, DES_key_schedule*, DES_key_schedule*, int)' make: *** [crypto/wvtripledes.o] Error 1 解决方法: crypto/wvtripledes.cc 修改 #if OPENSSL_VERSION_NUMBER >= 0x0090705FL 改为 #if 0

compiling crypto/wvx509.o... crypto/wvx509.cc: In member function `WvString WvX509Mgr::get_extension(int)': crypto/wvx509.cc:1168: error: invalid conversion from `unsigned char**' to ` const unsigned char**' crypto/wvx509.cc:1171: error: invalid conversion from `unsigned char**' to ` const unsigned char**' make: *** [crypto/wvx509.o] Error 1 解决方法: crypto/wvx509.cc if (method->it)

ext_data = ASN1_item_d2i(NULL, &ext->value->data, ext->value->length, ASN1_ITEM_ptr(method->it)); else ext_data = method->d2i(NULL, &ext->value->data, ext->value->length); 改为 if (method->it) ext_data = ASN1_item_d2i(NULL, (const unsigned char **)&ext->value->data, ext->value->length, ASN1_ITEM_ptr(method->it)); else ext_data = method->d2i(NULL, (const unsigned char **)&ext->value->data, ext->value->length);

compiling streams/wvpam.o... streams/wvpam.cc: In member function `bool WvPam::authenticate(const WvFastString&, const WvFastString&, const WvFastString&)': streams/wvpam.cc:71: error: `fail' undeclared (first use this function) streams/wvpam.cc:71: error: (Each undeclared identifier is reported only once

for each function it appears in.) make: *** [streams/wvpam.o] Error 1 解决方法: return fail; 改为 return false;

[root@localhost wvstreams-4.0.1]# make install [root@localhost wvstreams-4.0.1]# cp libwvutils.so ../install/lib/libwvutils.so.4.0 -a [root@localhost wvstreams-4.0.1]# cd ..

[root@localhost wvdial-1.54.0]# tar xzf wvdial-1.54.0.tar.gz [root@localhost wvdial-1.54.0]# cd wvdial-1.54.0 [root@localhost wvdial-1.54.0]# cp /works/wvdial-1.54.0/install/include/wvstreams/*.h . [root@localhost wvdial-1.54.0]# vi Makefile PREFIX=/usr/local 改为 PREFIX=/works/wvdial-1.54.0/install

PPPDIR=/etc/ppp/peers

改为 PPPDIR=${PREFIX}/etc/ppp/peers

XPATH=.. ../wvstreams/include $(PKGINC) 改为 XPATH=/works/wvdial-1.54.0/install/include/wvstreams

LIBS += -L../wvstreams -lwvutils -lwvstreams 改为 LIBS += -L/works/wvdial-1.54.0/install/lib -lwvutils -lwvstreams -lwvbase -lz

[root@localhost wvdial-1.54.0]# vi wvrules.mk 增加 CC = arm-linux-g++ CXX = arm-linux-g++ [root@localhost wvdial-1.54.0]# make [root@localhost wvdial-1.54.0]# make install

3.3.2、wvdial-1.60.4 export PATH=/usr/local/arm/4.2.2-eabi/usr/bin:$PATH tar xjf zlib-1.2.5.tar.bz2

cd zlib-1.2.5 ./configure --prefix=/works/cdma/install-4.2.2 修改 Makefile CC = arm-linux-gcc CPP=arm-linux-gcc -E AR=arm-linux-ar rc

LDSHARED=

arm-linux-gcc ....

RANLIB=arm-linux-ranlib make make install

openssl-0.9.8n

patch -N -p 1 -i ../openssl-0.9.8n-fix_manpages-1.patch
./Configure --prefix=/works/cdma/install-4.2.2 make make install os/compiler:arm-linux-gcc

wvstreams-4.6.1 修改 configure

with_zlib=no 改为 with_zlib=yes (有两处)

with_openssl=no 改为 with_openssl=yes (有两处) ./configure --prefix=/works/cdma/install-4.2.2 --host=arm-linux CPPFLAGS=-I/works/cdma/install-4.2.2/include LDFLAGS=-L/works/cdma/zlib-1.2.5-4.2.2 CFLAGS=-I/works/cdma/zlib-1.2.5-4.2.2 --with-zlib=/works/cdma/zlib-1.2.5-4.2.2/ --with-openssl=/works/cdma/openssl-0.9.8n-4.2.2 --without-dbus --with-pam=no --with-tcl=no --with-qt=no --without-valgrind

make

如果出现 undefined reference to "EVP_MD_size"错误 将出现错误的语句 return EVP_MD_size((evp_md_st *)evpmd;改成 return ((evp_md_st *)evpmd)->md_size;即可

make install

wvdial-1.60.4 修改 Makefile prefix=/usr/local 改为 prefix=/works/cdma/install-4.2.2

PPPDIR=/etc/ppp/peers 改为 PPPDIR=${prefix}/etc/ppp/peers

PC_CFLAGS=$(shell pkg-config --cflags libwvstreams) 改为 PC_CFLAGS=-I/works/cdma/install-4.2.2/include/wvstreams

PC_LIBS=$(shell pkg-config --libs libwvstreams) PC_LIBS=-L/works/cdma/install-4.2.2/lib -lwvstreams -lwvutils -lwvbase

修改 wvrules.mk WVLINK_CC = gcc

改为 WVLINK_CC = arm-linux-g++ CC = arm-linux-g++ CXX = arm-linux-g++

make make install

4、

Linux 内核的配置与修改

4.1、linux 内核配置 make menuconfig Device Drivers ---> [*] Network device support ---> <M> [*] [*] <M> <M> <M> <M> <M> PPP (point-to-point protocol) support PPP multilink support (EXPERIMENTAL) PPP filtering PPP support for async serial ports PPP support for sync tty ports PPP Deflate compression PPP MPPE compression (encryption) (EXPERIMENTAL) PPP over Ethernet (EXPERIMENTAL)

[*] USB support ---> <M> USB Modem (CDC ACM) support

USB Serial Converter support ---> <M> USB driver for GSM and CDMA modems

4.2、linux 内核修改 drivers/usb/serial/option.c static struct usb_device_id option_ids[] = { … }; 在这个数组中添加两项 { USB_DEVICE(0x19d2, 0x0031) }, { USB_DEVICE(0x19d2, 0x0034) }, 4.3、linux 内核编译 make zImage make modules

5、

3G 模块的使用

5.1、加载内核模块 insmod option.ko insmod cdc-acm.ko

insmod slhc.ko insmod ppp_generic.ko insmod pppox.ko insmod pppoe.ko insmod ppp_synctty.ko insmod ppp_deflate.ko insmod crc-ccitt.ko insmod ppp_async.ko insmod sha1_generic.ko insmod ppp_mppe.ko

5.2、加载 USB 文件系统 mount -t usbfs usbfs /proc/bus/usb

5.3、ZTE-mf637u(中国联通)的使用 5.3.1、配置文件/etc/usb_modeswitch.setup # Configuration for the usb-modeswitch package, a mode switching tool for # USB devices providing multiple states or modes # # This file is evaluated by the wrapper script "usb_modeswitch" in /lib/udev # To enable an option, set it to "1", "yes" or "true" (case doesn't matter)

# Everything else counts as "disable"

# Disable automatic mode switching globally (e.g. to access the original # install storage)

DisableSwitching=0

# Enable logging (results in a extensive report file in /var/log, named # "usb_modeswitch_<interface-name>"

EnableLogging=0

######################################################## # ZTE MF622 (aka "Onda MDC502HS") # ZTE MF626 # ZTE MF628+ (tested version from Telia / Sweden) # ZTE MF633 # ZTE MF636 (aka "Telstra / BigPond 7.2 Mobile Card") # ZTE MF637

# # Contributor: Joakim Wennergren and others

DefaultVendor= 0x19d2 DefaultProduct= 0x2000

TargetVendor=

0x19d2

TargetProduct= 0x0031

MessageContent="5553424312345678000000000000061b0000000200000000000 00000000000" MessageContent2="5553424312345678000000000000061b000000030000000000 000000000000"

NeedResponse=1

5.3.2、配置文件/etc/wvdial.conf [Dialer Defaults]

Modem = /dev/ttyUSB2

Init1 = ATZ

Init3 = ATE0V1

Init5 = ATS0=0

Init6 = AT+CGDCONT=1,"IP","uninet"

Init7 = AT+CFUN=1

Modem Type = USB Modem

Baud = 460800

New PPPD = yes

ISDN = 0

Phone = *99***1#

Password = any

Username = any

Stupid Mode = 1

5.3.3 ZTE-mf637u(中国联通)的操作步骤 5.3.3.1、设置环境变量 export PATH= /works/wvdial-1.54.0/install/bin: /works/cdma/install/bin :$PATH export LD_LIBRARY_PATH= /works/wvdial-1.54.0/install/lib: /works/cdma/install/lib:$LD_LIBRARY_PATH 5.3.3.2、插入 ZTE-mf637u(中国联通)无线网卡 5.3.3.3、等待 5 秒钟左右、运行 usb-modeswitch -W 5.3.3.4、运行 wvdial --> WvDial: Internet dialer version 1.54.0 --> Cannot open /dev/ttyUSB2: Cannot get information for serial port. --> Cannot open /dev/ttyUSB2: Cannot get information for serial port. --> Cannot open /dev/ttyUSB2: Cannot get information for serial port.

解决:(两种方法) 5.3.3.4.1 将 wvstreams-4.0.1/streams/wvmodem.cc #if HAVE_LINUX_SERIAL_H 改为

#if 0

5.3.3.4.2. wvstreams-4.0.1 的配置命令增加 ac_cv_header_linux_serial_h=no 即./configure --prefix=/works/wvdial-1.54.0/install --host=arm-linux CFLAGS=-I/works/cdma/install/include LDFLAGS=-L/works/cdma/install/lib/ --with-zlib=/works/cdma/zlib-1.2.5 --with-openssl=/works/cdma/openssl-0.9.8n --without-dbus --with-pam=no --with-tcl=no --with-qt=no ac_cv_header_linux_serial_h=no 重新编译。

5.4、ZTE-mu351(中国移动)的使用 5.4.1、配置文件/etc/wvdial.conf Modem = /dev/ttyACM2 Init1 = ATZ Init3 = ATE0V1 Init5 = ATS0=0 Init6 = AT+CGDCONT=1,"IP","cmnet" Init7 = AT+CFUN=1 Modem Type = USB Modem Baud = 460800 New PPPD = yes ISDN = 0 Phone = *99***1#

Password = any Username = any Stupid Mode = 1 5.4.2、ZTE-mu351(中国移动)的操作步骤 5.4.2.1、设置环境变量 export PATH=/root/cdma:$PATH export LD_LIBRARY_PATH=/root/cdma:$LD_LIBRARY_PATH 5.4.2.2、插入 ZTE-mu351(中国移动)无线网卡 5.4.2.3、等待 5 秒钟左右、运行 eject /dev/sr0。(5.3.3.3 也可以使用此方法) 5.4.2.4、运行 wvdial --> WvDial: Internet dialer version 1.54.0 --> Initializing modem. --> Sending: ATZ ATZ OK --> Sending: ATE0V1 ATE0V1 OK --> Sending: ATS0=0 OK --> Sending: AT+CGDCONT=1,"IP","cmnet"

OK --> Sending: AT+CFUN=1 OK --> Modem initialized. --> Sending: ATDT*99***1# --> Waiting for carrier. NO CARRIER --> No Carrier! Trying again. --> Sending: ATDT*99***1# --> Waiting for carrier. NO CARRIER --> No Carrier! Trying again. --> Sending: ATDT*99***1# --> Waiting for carrier. NO CARRIER --> No Carrier! Trying again. --> Sending: ATDT*99***1# --> Waiting for carrier. NO CARRIER --> No Carrier! Trying again. --> Sending: ATDT*99***1#

--> Waiting for carrier. ^MODE: 15 CONNECT 2800000 --> Carrier detected. Starting PPP immediately. --> Starting pppd at Mon Aug 16 16:17:15 2010 --> pid of pppd: 1364 --> Using interface ppp0 --> local IP address 10.67.54.108 --> remote IP address 192.200.1.21 --> primary DNS address 211.136.20.203

--> secondary DNS address 211.136.17.107

6、

参考资料

http://sourceforge.net/projects/libusb/files/libusb-1.0/ http://www.draisberghof.de/usb_modeswitch/ http://www.filewatcher.com/m/usb_modeswitch-1.0.2.tar.bz2.32162.0.0.html

http://www.linuxfromscratch.org/blfs/view/6.1/basicnet/libpcap.html http://www.linuxfromscratch.org/blfs/view/6.1/connect/dialup.html#ppp

http://code.google.com/p/wvstreams/downloads/detail?name=wvstreams-4.6.1.tar.g z&can=2&q= http://code.google.com/p/wvstreams/downloads/list

http://ftp.debian.org/debian/pool/main/w/wvdial/ http://code.google.com/p/wvstreams/downloads/list


赞助商链接
相关文章:
嵌入式Linux底层驱动综合开发实验
嵌入式Linux底层驱动综合开发实验_计算机软件及应用_IT/计算机_专业资料。嵌入式...实验内容 本实验分四个小项目进行,分别是: a) 内核模块编程基本实验 b) 字符...
嵌入式LINUX按键驱动程序开发
嵌入式LINUX按键驱动程序开发 - 嵌入式 Linux 按键驱动程序开发 摘要: 文章主要阐述了Linux驱动程序的基本概念以及字符设备、 块设备和网络设备的特点, 通过键盘驱动...
嵌入式Linux下ADC的驱动程序实现与应用
嵌入式Linux下ADC的驱动程序实现与应用 - 龙源期刊网 http://www.qikan.com.cn 嵌入式Linux下ADC的驱动程序实现 与应用 作者:孙德辉 梁鑫杨扬 来源...
嵌入式linux驱动开发
嵌入式linux驱动开发_计算机软件及应用_IT/计算机_专业资料。嵌入式linux驱动开发...在系统启动的时候初始化, 也可以在需要的时候以模块的方式动态加载到内核中去。...
基于嵌入式Linux系统的3G4G路由器设计
硬件平台模块的功能主要有两个方面,一方面要支持无线网卡和无线数 据卡的驱动,另一方面要通过嵌入式 Linux 系统中的 iptables 数据包过滤系统将无线局域网和 3G/4G...
嵌入式Linux下CAN总线驱动程序设计
嵌入式Linux下CAN总线驱动程序设计_计算机硬件及网络_IT/计算机_专业资料。<> 全部作者: 宋扩东 卢珞先 第 1 作者单位: 武汉理工大学信息工程学院通信与信息系统...
嵌入式Linux下PCIE数据采集卡驱动开发_图文
嵌入式Linux下PCIE数据采集卡驱动开发_计算机软件及...现代的智能网络电视、物联网、数码相机、 3G/4G智...它包含了诸多与字符设备有关的成员,如模块的拥有者...
嵌入式Linux工程师常见笔试题
嵌入式Linux工程师常见笔试题_计算机软件及应用_IT/计算机_专业资料。嵌入式Linux....ko 是内核模块文件,是内核加载的某个模块,一般是驱动程序。 4. 如何使用 vi...
嵌入式Linux系统及应用
嵌入式Linux系统应用_工学_高等教育_教育专区。东南大学嵌入式Linux系统应用...13 4.2.2 LED 模块驱动程序设计......
实验三 嵌入式Linux驱动(1)
实验三 嵌入式Linux驱动(1)_计算机软件及应用_IT/计算机_专业资料。七段数码管...二、 【实验内容】 1) 学习 Linux 驱动源代码,分析代码各个函数模块的功能...
更多相关标签: