文档库 最新最全的文档下载
当前位置:文档库 › MT7620_WIFI_移植

MT7620_WIFI_移植

MT7620_WIFI_移植
MT7620_WIFI_移植

rt2860v2_ap/rt2860v2_sta driver for openwrt trunk(3.10.x kernel) on MT7620 SOC. (Test on mt7620n 16m flash + 64M ram)

port and build steps:

go and get the sources of openwrt trunk:

$mkdir-p ~/openwrt $cd ~/openwrt

$git clone git://https://www.wendangku.net/doc/4916371524.html,/openwrt.git openwrt-trunk

$cd openwrt-trunk

$./scripts/feeds update -a

$./scripts/feeds install -a

defconfig and make:

$make defconfig

$make menuconfig

-------select the following configuration------

Target System: (Ralink 288x/3xxx) Subtarget: (MT7620N based boards)

$make V=99

wait make command to be done. when make finished. the firmware will be in the directory:$HOME/openwrt/openwrt-trunk/bin/ramips/ then, your can download burn the new firmware to the mt7620 SOC Board via TFTP in the uboot interface. but, unlikely, that default configuraion don't has wifi support, so we cann't startup a Hotspot on our MT7620 SOC for incoming connections from Smartphones and laptops.

all steps are the default configuarions from the openwrt official site. and this step will guide you to port rt2860v2_ap driver to the kernel tree and build it to fix that problems.

$cd ~/

$git clone https://https://www.wendangku.net/doc/4916371524.html,/wuqiong/rt2860v2-for-openwrt-mt7620.git

$cp-r rt2860v2-for-openwrt-mt7620/ralink

~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.3

3.2/linux-ramips_mt7620n/linux-3.10.28/drivers/mtd/

$cp-r rt2860v2-for-openwrt-mt7620/rt2860v2

rt2860v2-for-openwrt-mt7620/rt2860v2_ap

~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.3

3.2/linux-ramips_mt7620n/linux-3.10.28/drivers/net/wireless/

after copied the driver code to the kernel build tree. then, let's to add Kconfig and Makefile objs. in each directory of "mtd" and "wireless". add the following line before the end of file: ~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33. 2/linux-ramips_mt7620n/linux-3.10.28/drivers/mtd/Kconfig

source"drivers/mtd/ralink/Kconfig"

add the following line before the end of

file: ~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33. 2/linux-ramips_mt7620n/linux-3.10.28/drivers/mtd/Makefile

obj-$(CONFIG_MTD_RALINK) += ralink/

add the following line before the end of

file: ~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33. 2/linux-ramips_mt7620n/linux-3.10.28/drivers/net/wireless/Kconfig

source "drivers/net/wireless/rt2860v2_ap/Kconfig"

add the following line before the end of

file: ~/openwrt/openwrt-trunk/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33. 2/linux-ramips_mt7620n/linux-3.10.28/drivers/net/wireless/Makefile

obj-$(CONFIG_RT2860V2_AP) += rt2860v2_ap/

Okey, configuration finished.

go back to the ~/openwrt/openwrt-trunk directory. and run shell command: $make kernel_menuconfig

enter this menu:

A: Device Driver --> <*> Memory Technology Device (MTD) support ---> Ralink Flash Type support ---> [*] Ralink MTD support

B: Device Driver--> [*]Network device support---> [*]Wireless LAN---> <*> Ralink RT2860 802.11n AP support

[*]LED Support

[ ]WSC (WiFi Simple Config)

[*]LLTD (Link Layer Topology Discovery Protocol)

[*]WDS

[*]MBSSID

[*]New MBSSID MODE

[*]AP-CLient Support

[*]MAC Repeater Support

[ ]IGMP snooping

[ ]NETIF Block

[ ]DFS

[*]Carrier Detect

[ ]DLS ((Direct-Link Setup) Support

[ ]IDS (Intrusion Detection System) Support

[*]CoC Support

[ ]Memory Optimization

[ ]Video Turbine support

[ ] 802.11n Draft3

[ ]Adjust Power Consumption Support

[ ]Single SKU

Choose Power Design (Internal PA and Internal LNA) --->

[ ]TSSI Compensation

[ ]Temperature Compensation

we select "*" to building the driver into the kernel, not a kernel module. after selecting the configration. save and exit menuconfig.

Now. we have add and configured the wifi driver to the kernel build tree. just type

the :$make V=99 command in directory: ~/openwrt/openwrt-trunk , and wait for some minutes.

after builded, download and burn the new firmware with wifi driver. you can found that, wifi device ra0 will appear. but your cann't ifconfig ra0 up. because we need lack

the etc/Wireless/RT2860/RT2860.dat file and /etc_ro directory, also an scripts file

in/lib/wifi directory which first introduced by lintel.

enjoy diy with your hands. I will not provide the dat file and script file. you need to scratch up those file by yourself.

no thanks. but welcome to contact me. https://www.wendangku.net/doc/4916371524.html,

实验四Linux内核移植实验

合肥学院 嵌入式系统设计实验报告 (2013- 2014第二学期) 专业: 实验项目:实验四 Linux内核移植实验 实验时间: 2014 年 5 月 12 实验成员: _____ 指导老师:干开峰 电子信息与电气工程系 2014年4月制

一、实验目的 1、熟悉嵌入式Linux的内核相关代码分布情况。 2、掌握Linux内核移植过程。 3、学会编译和测试Linux内核。 二、实验内容 本实验了解Linux2.6.32代码结构,基于S3C2440处理器,完成Linux2.6.32内核移植,并完成编译和在目标开发板上测试通过。 三、实验步骤 1、使用光盘自带源码默认配置Linux内核 ⑴在光盘linux文件夹中找到linux-2.6.32.2-mini2440.tar.gz源码文件。 输入命令:#tar –jxvf linux-2.6.32.2-mini2440-20110413.tar对其进行解压。 ⑵执行以下命令来使用缺省配置文件config_x35 输入命令#cp config_mini2440_x35 .config;(注意:x35后面有个空格,然后有个“.”开头的 config ) 然后执行“make menuconfig”命令,但是会出现出现缺少ncurses libraries的错误,如下图所示: 解决办法:输入sudo apt-get install libncurses5-dev 命令进行在线安装ncurses libraries服务。

安装好之后在make menuconfig一下就会出现如下图所示。 ⑶配置内核界面,不用做任何更改,在主菜单里选择退出,并选“Yes”保存设置返回到刚命令行界面,生成相应配置的头文件。 编译内核: #make clean #make zImage 在执行#make zImage命令时会出现如下错误: 错误:arch/arm/mach-s3c2440/mach-mini2440.c:156: error: unknown field 'sets' specified in initializer 通过网上查找资料 于是在自己的mach-mini2440.c中加入 #include

嵌入式Linux内核移植详解(顶嵌)

内核移植阶段 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。 内核和用户界面共同为用户提供了操作计算机的方便方式。也就是我们在windows下看到的操作系统了。由于内核的源码提供了非常广泛的硬件支持,通用性很好,所以移植起来就方便了许多,我们需要做的就是针对我们要移植的对象,对内核源码进行相应的配置,如果出现内核源码中不支持的硬件这时就需要我们自己添加相应的驱动程序了。 一.移植准备 1. 目标板 我们还是选用之前bootloader移植选用的开发板参数请参考上文的地址: https://www.wendangku.net/doc/4916371524.html,/thread-80832-5-1.html。bootloader移植准备。 2. 内核源码 这里我们选用比较新的内核源码版本linux-2.6.25.8,他的下载地址是 ftp://https://www.wendangku.net/doc/4916371524.html,/pub/linux/kernel/v2.6/linux-2.6.25.8.tar.bz2。 3. 烧写工具 我们选用网口进行烧写这就需要内核在才裁剪的时候要对网卡进行支持 4. 知识储备 要进行内核裁剪不可缺少的是要对内核源码的目录结构有一定的了解这里进 行简单介绍。 (1)arch/: arch子目录包括了所有和体系结构相关的核心代码。它的每一个子 目录都代表一种支持的体系结构,例如i386就是关于intel cpu及与之相兼容体 系结构的子目录。PC机一般都基于此目录。 (2)block/:部分块设备驱动程序。 (3)crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验 算法。 (4) documentation/:文档目录,没有内核代码,只是一套有用的文档。 (5) drivers/:放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目 录:如,/block 下为块设备驱动程序,比如ide(ide.c)。 (6)fs/:所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持 一个文件系统, 例如fat和ext2。

S3C6410 移植Android 内核移植经验

主要过程: . 安装lunux 环境 . 安装编译工具 . 下载Linux kernel . 安装Android SDK . 获得root file system . 修改Linux kernel 源码 . 配置Linux kernel . 修改root file system . 编译Linux kernel . 下载kernel Image 1.安装linux 环境 安装Ubuntu Linux 系统,从网站上下载操作系统安装光盘映像,地址: https://www.wendangku.net/doc/4916371524.html,/ubuntu/releases/8.04/ 下载ubuntu-8.04.2-desktop-i386.iso,刻录成光盘安装,安装可以在windows 系统下进行, 选取有15G 空间的硬盘安装,输入用户密码开始安装 这一步结束退出光盘重启进入Ubuntu 系统,完成余下系统安装。 Linux 安装完成,进入Ubuntu 系统,确保电脑连接Internet,安装一些必要软件。 打开终端输入命令框,进行下面的操作: $ sudo apt-get install ssh $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl

$ sudo apt-get install valgrind $ sudo apt-get install sun-java6-jdk $ sudo apt-get install libncurses5-dev 所有软件系统会自动从网络下载安装,完成后可以开始Android 的移植。 2.安装编译工具 下载: $ wget https://www.wendangku.net/doc/4916371524.html,/public/gnu_toolchain/arm-none-linux-gnuea bi/arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 安装: $ tar -xjvf arm-2008q1-126-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 3.下载Linux kernel 从下面地址获得: https://www.wendangku.net/doc/4916371524.html,/p/android/downloads/list?can=1&q=&colspec=File name Summary Uploaded Size DownloadCount Kernel : linux-2.6.23-android-m5-rc14.tar.gz 解压文件 $ tar -xf linux-2.6.23-android-m5-rc14.tar.gz 4.安装Android SDK 从网上下载linux 版本的Android SDK,如下 https://www.wendangku.net/doc/4916371524.html,/android/android-sdk_m5-rc15_linux-x86.zip 下载后解压,获得android-sdk_m5-rc15_linux-x86 文件 5.获得root file system ⑴下载busybox 工具从下面地址 http://benno.id.au/blog/2007/11/14/android-busybox(linux 环境中下载)⑵运行emulator 获取root file system $ cd <目录>/ android-sdk_m5-rc15_linux-x86/tools $ ./emulator& 等待emulator 启动,看到出现Android 系统画面,进入菜单ALL/Dev Tools/Development Settings 下,将Wait for debugger,Show running processes,Show screen updates 这三项打勾,回到命令输入终端。 $ ./adb push /busybox /data $ ./adb shell # /data/busybox tar -czf system.tar.gz /system # /data/busybox tar -czf data.tar.gz /data # /data/busybox tar -czf etc.tar.gz /etc # /data/busybox tar -czf sbin.tar.gz /sbin # exit $ ./adb pull /system.tar.gz ./ $ ./adb pull /data.tar.gz ./

02--基于ARM9的Linux2.6内核移植

基于ARM9的Linux2.6内核移植 姓名 系别、专业 导师姓名、职称 完成时间

目录 摘要................................................... I ABSTARCT................................................ II 1 绪论.. (1) 1.1课题研究的背景、目的和意义 (1) 1.2嵌入式系统现状及发展趋势 (1) 1.3论文的主要工作 (4) 2 嵌入式 Linux系统构成和软件开发环境 (5) 2.1嵌入式Linux系统的体系结构 (5) 2.2嵌入式Linux系统硬件平台 (5) 2.3嵌入式Linux开发软件平台建立 (7) 2.4本章小结 (11) 3 嵌入式Linux的引导BootLoader程序 (12) 3.1 BootLoader概述 (12) 3.2 NAND Flash和NOR Flash的区别 (13) 3.3本章小结 (19) 4 Linux内核的编译、移植 (20) 4.1 Linux2.6内核的新特性简介 (20) 4.2 Linux内核启动流程 (20) 4.3内核移植的实现 (21) 4.4 MTD内核分区 (23) 4.5配置、编译内核 (24) 4.6本章小结 (26) 5 文件系统制作 (27) 5.1 yaffs文件系统简介 (27) 5.2 内核支持YAFFS文件系统 (27) 5.3本章小结 (30) 6测试 (31) 6.1简单测试方法的介绍 (31) 6.2编写简单C程序测试移植的系统 (31) 6.3在开发板执行测试程序 (32)

am335x_linux-3.14.43内核移植笔记

本文主要描述在EVB335X-II以Device Tree的方式移植新TI官网AM335X系列最新的linux-3.14.43版本内核以及移植Debian文件系统的过程及遇到的一些问题。整个Device Tree牵涉面比较广,即增加了新的用于描述设备硬件信息的文本格式(即.dts文件),又增加 了编译这一文本的工具,同时Bootloader也需要支持将编译后的Device Tree传递给Linux 内核。以下是修改步骤: 一、修改uboot,支持Device Tree EVB335X-II在linux-3.2版本内核移植的时候已经有uboot,因此只需在该uboot上增加Device Tree支持即可,以下是修改步骤: 1、修改include/configs/com335x.h文件,增加支持DT的宏定义: /* Flattened Device Tree */ #define CONFIG_OF_LIBFDT 2、修改uboot启动参数,增加dtb文件的加载和启动(由于目前只是移植EMMC版本的EVB335X-II,因此只需修改EMMC的启动参数即可,大概在405行),修改如下: #elif defined(CONFIG_EMMC_BOOT) #define CONFIG_BOOTCOMMAND \ "run mmcboot;" #define CONFIG_EXTRA_ENV_SETTINGS \ "lcdtype=AUO_AT070TN94\0" \ "console=ttyO0,115200n8\0" \ "mmcroot=/dev/mmcblk0p2 rw\0" \ "mmcrootfstype=ext4 rootwait\0" \ "mmcargs=setenv bootargs console=${console} noinitrd root=${mmcroot} rootfstype=${mmcrootfstype} lcdtype=${lcdtype} consoleblank=0\0" \ "mmcdev=" MMCDEV "\0" \ "loadaddr=0x81000000\0" \ "dtbfile=evb335x-ii-emmc.dtb\0" \ "bootenv=uEnv.txt\0" \ "bootpart=" BOOTPART "\0" \ "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \ "importbootenv=echo Importing environment from mmc ...; " \ "env import -t $loadaddr ${filesize}\0" \ "loadaddr-dtb=0x82000000\0" \ "loadimage=load mmc ${bootpart} ${loadaddr} uImage\0" \ "loaddtb=load mmc ${bootpart} ${loadaddr-dtb} ${dtbfile}\0" \ "mmcboot=mmc dev ${mmcdev}; " \ "if mmc rescan; then " \ "echo SD/MMC found on device ${mmcdev};" \ "if run loadbootenv; then " \ "echo Loaded environment from ${bootenv};" \ "run importbootenv;" \ "fi;" \ "run mmcargs;" \

实验6 ——Linux 内核移植实验

实验 6 Linux-2.6.28移植实验 【实验目的】 熟悉Linux-2.6.28移植过程。 【实验步骤】 第一步:从https://www.wendangku.net/doc/4916371524.html,/pub/linux/kernel/v2.6下载linux-2.6.28.tar.bz2压缩文件(或光盘中提供); 【图5-3-1】 第二步:将linux-2.6.28.tar.bz2压缩文件复制到Linux工作目录; 第三步:在Linux下利用tar jxvf linux-2.6.28.tar.bz2命令解压linux-2.6.28.tar.bz2压缩文件。 第四步:进入解压后的linux-2.6.28目录下,利用vi编辑工具修改linux-2.6.28目录下的顶层Makefile文件。 第五步:修改linux-2.6.28目录下的顶层Makefile文件,设置编译linux操作系统的CPU体系架构变量ARCH 和所使用的交叉编译工具链变量CROSS_COMPILE(注:实验使用arm-linux交叉编译工具链 4.2.1版本,可从https://www.wendangku.net/doc/4916371524.html,/pub/snapgear/tools/arm-linux/下载arm-linux-tools-20070808.tar.gz压缩文件,解压到/OPT目录下)。 改为 ARCH ?= arm CROSS_COMPILE ?=/opt/usr/local/bin/arm-linux-

【图5-3-2】 第六步:将linux-2.6.28目录下的arch/arm/configs/mainstone_defconfig文件复制为xsbase270_defconfig文件。 第七步:在linux-2.6.28/arch/arm/mach-pxa目录下增加一个xsbase270.c文件(实际上从该目录下的mainstone.c复制而来.也可以直接复制实验代码中的文件),然后根据实际平台进行修改。 第八步:修改linux-2.6.28\arch\arm\mach-pxa目录下的Makefile文件,增加编译xsbase270.c 的编译选项,即:obj-$(CONFIG_MACH_XSBASE270) += xsbase270.o。 第九步:修改linux-2.6.28\arch\arm\mach-pxa目录下的Kconfig文件,增加在裁剪内核时支持对EELiod/Liod平台的选择 【图5-3-3】 第十步:linux-2.6.28/drivers/mtd/maps文件夹中增加一个xsbase270-flash.c文件(注:xsbase270-flash.c从该目录下的mainstone-flash.c修改而来, 也可以直接复制实验代码中的文件)。 第十一步:修改linux-2.6.28\drivers\mtd\maps目录下的Makefile文件,增加编译xsbase270-flash.c的编译选项, 即:obj-$ (CONGIG_MTD_XSBASE270 ) += xsbase270-flash.o。

Linux内核移植开发手册

江苏中科龙梦科技有限公司 Linux内核移植开发手册 修 订 记 录 项 次 修订日期 版 本修订內容修订者审 核 1 2009‐02‐04 0.1 初版发行陶宏亮, 胡洪兵 2 2009‐11‐20 0.2 删除一些 多余文字 陶宏亮, 胡洪兵

DISCLAIMER THIS DOCUMENTATION IS PROVIDED FOR USE WITH LEMOTE PRODUCTS. NO LICENSE TO LEMOTE PROPERTY RIGHTS IS GRANTED. LEMOTE ASSUMES NO LIABILITY, PROVIDES NO WARRANTY EITHER EXPRESSED OR IMPLIED RELATING TO THE USAGE, OR INTELLECTUAL PROPERTY RIGHT INFRINGEMENT EXCEPT AS PROVIDED FOR BY LEMOTE TERMS AND CONDITIONS OF SALE. LEMOTE PRODUCTS ARE NOT DESIGNED FOR AND SHOULD NOT BE USED IN ANY MEDICAL OR LIFE SUSTAINING OR SUPPORTING EQUIPMENT. ALL INFORMATION IN THIS DOCUMENT SHOULD BE TREATED AS PRELIMINARY. LEMOTE MAY MAKE CHANGES TO THIS DOCUMENT WITHOUT NOTICE. ANYONE RELYING ON THIS DOCUMENTATION SHOULD CONTACT LEMOTE FOR THE CURRENT DOCUMENTATION AND ERRATA. JIANGSU LEMOTE TECHNOLOGY CORPORATION LIMITED MENGLAN INDUSTRIAL PARK,YUSHAN,CHANGSHU CITY,JIANGSU PROVINCE,CHINA Tel: 0512‐52308661 Fax: 0512‐52308688 Http: //https://www.wendangku.net/doc/4916371524.html,

基于ARM的嵌入式linux内核的裁剪与移植.

基于ARM的嵌入式linux内核的裁剪与 移植 0引言微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Neculeus和WindowsCE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linu 0 引言 微处理器的产生为价格低廉、结构小巧的CPU和外设的连接提供了稳定可靠的硬件架构,这样,限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,已经陆续出现了一些嵌入式操作系统(比较著名的有Vxwork、pSOS、Nec uleus和Windows CE)。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限制了开发者的积极性。而Linux的开放性,使得许多人都认为Linux 非常适合多数Intemet设备。Linux操作系统可以支持不同的设备和不同的配置。Linux对厂商不偏不倚,而且成本极低,因而很快成为用于各种设备的操作系统。嵌入式linux是大势所趋,其巨大的市场潜力与酝酿的无限商机必然会吸引众多的厂商进入这一领域。 1 嵌入式linux操作系统 Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix 相似、以核心为基础、全内存保护、多任务、多进程的操作系统。可以支持广泛的计算机硬件,包括X86、Alpha、Sparc、MIPS、PPC、ARM、NEC、MOTOROLA 等现有的大部分芯片。Linux的程序源码全部公开,任何人都可以根据自己的需要裁剪内核,以适应自己的系统。文章以将linux移植到ARM920T内核的 s3c2410处理器芯片为例,介绍了嵌入式linux内核的裁剪以及移植过程,文中介绍的基本原理与方法技巧也可用于其它芯片。 2 内核移植过程 2.1 建立交叉编译环境 交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同的CPU对应语言。 交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm—linux—gcc交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。 自行搭建交叉编译环境通常比较复杂,而且很容易出错。本文使用的是

linux_内核移植方法及错误

出现问题: ## Starting application at 0x30008000 ... Uncompressing Linux............................................................. 解决方案: setenv bootargs console=ttySAC0,115200 mem=64M ;console明令在哪暂时还没解决??? setenv TCP cubic registered NET: Registered protocol family 1 NET: Registered protocol family 17 Root-NFS: No NFS server available, giving up. VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "" or unknown-block(2,0) Please append a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) 解决方法:把 08.05.11、<*> RAM disk support 09.27.07、<*> Compressed ROM file system support (cramfs) 1. 问题一 下载内核到flash中,运行到如下即停止没有下文: Uncompressing Linux……………………done,booting the kernel 卡在这里不动了 原因分析:可能是内核的启动参数传递时没有填写正确, 也可能是在linux内核中没对flash分区, 还有另一可能原因是在内核编译配置时没将串口驱动勾选。 解决办法: 如果是命令参数问题,则作如下修改:注释掉arch/arm/kernel/setup.c文件中的parse_tag_cmdline()函数中的strlcpy()函数,这样就可以使用默认的CONFIG_CMDLINE了,在.config文件中它被定义为"root=/dev/mtdblock2 ro init=/linuxrc console=ttySAC0,115200"(视具体情况而定),在内核配置文件的Boot options中填入也可。 如果是内核NAND flash分区的问题,则作如下修改:

嵌入式Linux内核移植

1嵌入式Linux内核移植 姓名:成炼学号:081141 实验目的 l 了解Linux内核源代码的目录结构及各目录的相关内容 l 了解Linux内核各配置选项内容和作用 l 掌握Linux内核配置文件的作用 l 掌握Linux内核的编译过程 l 掌握将新增内核代码加入到Linux内核结构中的方法 实验指引 尽管目前Linux 2.6版本内核已经增加了很多对ARM体系甚至是S3C2410 CPU的支持,但仍然需要对内核作一些小的修改来适应我们的开发板,并且需要重新配置、编译和重新生成新的内核映像。本实验着重从NAND Flash分区到下载到开发板等一系列连贯的操作来进行嵌入式Linux内核的移植。本实验的内核版本为2.6.26。 1. NAND Flash分区 从Nand Flash启动时,S3C2410硬件会自动把Nand Flash前4K代码拷贝芯片内部RAM空间,CPU其实是从内部RAM开始执行代码的,所以vivi必须放到Nand Flash顶端。vivi 开始执行后将初始化硬件设备、建立内存空间映射表,为调用内核做好准备;然后把压缩的内核映像加载到SDRAM中;最后跳转到内核映像入口,启动内核。 内核MTD分区必须与vivi分区相一致。因为,vivi分区中的地址是引导程序、内核映像及文件系统下载到Nand Flash的真正地址;而内核启动时,内核并不是去读vivi分区中的地址,而是去读内核MTD分区设定的地址;所以,如果内核MTD分区与vivi分区不相同,很可能导致不能正常启动内核及读取文件系统。 1.1 vivi的重新分区 根据开发板的Nand Flash大小及开发用途确定新的vivi分区,如表1.1。 表1.1 vivi的分区信息表

Camera驱动在Linux内核的移植解读

题_Camera驱动在Linux内核的移植 Camera驱动在Linux内核的移植Linux 3.0.8 内核的配置系统由以下3 个部分组成: > Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则 > 配置文件Kconfig:给用户提供配置选择的功能 > 配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供字符界面和图形界面)。这些配置工具都是使用脚本语言编写的,如Tcl/TK、perl 等。 在Linux 内核中增加程序需要完成以下 3 项工作: > 1. 将编写的源代码复制到Linux 内核源代码的相应目录 > 2. 在目录的Kconfig 文件中增加新源代码对应项目的编译配置选项 > 3. 在目录的Makefile 文件中增加对新源代码的编译条目 1. 实例引导:S3C2440 处理器的RTC 与LED 驱动配置。 首先,在Linux/drivers/char 目录中包含了S3C2410 处理器的RTC 设备驱动源代码s3c2410-rtc.c。 而在该目录的Kconfig 文件中包含S3C2410_RTC 的配置项目: config S3C2410_RTC bool "S3C2410 RTC Driver" depends on ARCH_S3C2410 help RTC (Realtime Clock)driver for the clock inbuilt into the Samsung S3C2410. This can provide periodic interrupt rates from 1Hz to 64Hz for user programs, and wakeup from Alarm. 上述Kconfig 文件的这段脚本意味着只有在ARCH_S3C2410 项目被配置的情况下,才会出现S3C2410_RTC 配置项目,这个配置项目为布尔型(要么编译入内核,要么不编译,选择"Y" 或"N" ),菜单撒很难过显示的字符串为"S3C2410 RTC Driver","help" 后面的内容为帮助信息。 除了布尔型的配置项目外,还存在一种三态型(tristate)配置选项,它意味着要么编译入内核,要么编译为内核模块,选项为"Y"、"M” 或"N"。

嵌入式实验四(Linux 内核移植及 LED 驱动测试)

实验四 Linux 内核移植及 LED 驱动测试 一、实验目的: 1.熟悉 Linux 内核基本目录结构,为后续 Linux 底层开发做准 备,熟悉 Linux 内核的配置及编译过程。 2.了解嵌入式 Linux 驱动开发基本方法,熟悉嵌入式 Linux 字 符设备驱动的开发框架。 二、实验内容: 1.下载或拷贝 Linux-3.14 源码。 2.针对实验箱配置内核。 3.编译内核并测试。 4.利用 Exynos4412 的 GPX2_7、GPX1_0、GPX2_4、GPX3_0 这 4 个 I/O 引脚控制 4 个 LED 发光二极管,使其闪烁。 三、实验原理: 1.Linux内核是Linux操作系统的核心,也是整个Linux功能 体现。它是用C语言编写,符合POSIX标准。Linux最早是由芬兰 黑客 Linus Torvalds为尝试在英特尔X86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,这里有一份Linus Torvalds当时在Usenet新闻组comp.os.minix所登载的帖子,这份著名的帖子标志着Linux计划的正式开始。在计划的早期有一些Minix黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。 Linux内核源代码非常庞大,随着版本的发展不断增加。它使用

1

目录树结构,并且使用Makefile组织配置编译。顶层目录的Makefile 是整个内核配置编译的核心文件,负责组织目录树中子目录的编译管理,还可以设置体系结构和版本号等。 嵌入式系统中内核移植需根据具体硬件配置对内核源码进行相应地修改、配置。 2. 如图所示,LED2~LED5分别与GPX2_7、GPX1_0、GPX2_4、 GPF3_5相连,通过GPX2_7、GPX1_0、GPX2_4、GPX3_0引脚的高低电平来控制三极管的导通性,从而控制LED的亮灭。 当这几个引脚输出高电平时发光二极管点亮;反之,发光二极管熄灭。 四、实验步骤及过程: 1.建立工作目录,将 Linux-3.14 内核源码解压到工作目录中。$ tar xvf linux-3.14.tar.xz $ cd linux-3.14 2.修改顶层 makefile 文件,指定体系结构及交叉编译工具。$ vim Makefile 修改: ARCH?= $(SUBARCH) CROSS_COMPILE?= $(CONFIG_CROSS_COMPILE:"%"=%)

AM335x的linux内核移植

摘要 随着时代的发展,人们的生活越来越离不开电子产品,特别是嵌入式电子产品。嵌入式的发展越来越好,得益于硬件的发展和各类嵌入式系统的进步。在众多的嵌入式系统中,最为让人熟悉的就是linux了。所以,这次的课题就以linux 内核为主题,使用的开发板是TI的beaglebone white。 关键词:Linux移植,嵌入式,arm

目录 1.嵌入式系统的概念 (4) 1.1 嵌入式系统定义 (4) 1.2 ATMEL9200开发平台 (4) 2.BootLoader简介 (4) 2.1 Boot Loader概念 (4) 2.2 Boot Loader启动过程 (5) 2.3 常用的Bootloader…………………………………………… .5 2.4 u-boot移植…………………………………………………… .5 3.嵌入式linux操作系统 (7) 3.1 嵌入式Linux (7) 3.2 嵌入式Linux的特点 (7) 3.3 从Linux到嵌入式Linux (8) 4. 基于BeagleBone的嵌入式linux系统移植 (9) 4.1 移植概念 (9) 4.2 Linux与移植相关内核结构 (9) 4.3 嵌入式Linux 操作系统移植 (9) 5 文件系统构建 (9) 6 把u-boot、linux内核、文件系统下载到SD卡中 (11) 7启动开发板,链接pc,查看效果 (11)

8 参考文献 (13)

1.嵌入式系统的概念 1.1 嵌入式系统定义 在信息科学技术爆炸式增长的今天,嵌入式系统早已经融入了我们生活的方方面面。美国汽车大王福特公司的高级经理曾宣称,“福特出售的…计算能力?已超过了IBM”。这并不是一个哗众取宠或者夸张的说法,在真正感受这句话的震撼力之前,让我们先了解一下嵌入式系统(Embedded Systems)的定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡等均是由嵌入式处理器控制的,嵌入式系统市场的深度和广度,由此可见一斑,尽管如此,它的市场价值也许仍然超过了您的想象:今天,嵌入式系统带来的工业年产值已超过了1万亿美元。 1.2 BeagleBone开发平台 BeagleBone 是仅有信用卡大小的低成本Linux 计算机,它与Internet 相连并运行高级操作系统,例如Android 4.0 和Ubuntu Linux。BeagleBone 包含大量I/O 并使用TI Sitara ?AM335x ARM? Cortex?-A8 处理器为实时分析提供处理能力。要进一步进行定制和扩展,可以使用Cape 插件板以轻松扩展BeagleBone 的功能。 BeagleBone 具有广泛的开源软件支持选项,包括社区支持的?ngstr?m Linux 发行版、Ubuntu或多个其他Linux 发行版。它还支持TI Android DevKit和TI Sitara Linux EZ SDK。TI 支持的两个操作系统使您可以快速入门并操作,只需进行简单的设置即可获得开箱即用体验。它们包括用于启动演示、基准和应用的GUI。此外,您可以快速开始开发您自己的应用。还通过嵌入的Adeneo 支持Windows Embedded Compact 7。 BeagleBone 是一个由社区支持的平台,可用作构建更完整系统的基础和社区软件基线的目标。作为一种替代方案,德州仪器(TI) 直接支持AM335x 入门套件或AM335x 评估模块。 2.BootLoader简介 2.1 Boot Loader概念 简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的Boot Loader 几乎是不可能的。尽管如此,我们仍然可以对Boot Loader 归纳出一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。

Tiny6410内核移植及多种驱动移植

Linux内核移植 一、环境 1.开发板 Tiny6410 NAND:2G RAM:256M MLC 2.操作系统 Fedora13 3.交叉编译器 arm-linux-gcc-4.5.1(linux自带) 4.内核版本 Linux-2.6.38 二、准备 配置交叉编译器 三、下载内核 https://www.wendangku.net/doc/4916371524.html, 四、解压内核 #tar -jxvf linux-2.6.38.tar.bz2 -C 路径 五、NAND Flash移植 1.修改根下的Makefile #vim Makefile 将约191行修改为: ARCH ?=(空格)arm CROSS_COMPILE ?= arm-linux- 2.执行下面命令生成默认配置文件 # cp arch/arm/configs/s3c6400_defconfig .config 如省略这个操作的话,后面会找不到System Type 3.运行配置菜单,做基本配置 #make menuconfig General setup->(/usr/4.5.1/bin/arm-linux-) Cross-compiler tool prefix 上面的设置可以通过修改内核根下的Makefiel中的如下行实现: CROSS_COMPILE ?= arm-linux- 然后再选择如下项目: System Type ---> ARM system type (ARM Ltd. Versatile family) ---> ( X) Samsung S3C64XX 返回上述菜单后,选择: System Type->[*] MINI6410

第1步 Linux配置菜单及内核移植

Linux配置菜单及内核移植 每次修改与增加内容者,需在文档修订记录中进行记录 一、说明 1.硬件平台 SEP0718 eASIC开发板 2.Linux BSP 0718-android-kernel-2.6.29 linux-v3.4(SEP4020) 二、配置菜单 进入BSP顶层目录后执行make menuconfig(调用arch/arm/Kconfig文件),即执行BSP的内核配置。 1.配置菜单选项介绍(SEP0718) 主菜单"Linux Kernel Configuration"

?Kconfig中指定:mainmenu "Linux Kernel Configuration" General setup ?Kconfig中source "init/Kconfig":menu "General setup" ?系统常规设置(略) ?重点配置选项 ●RCU Subsystem:Classic RCU ●(17) Kernel log buffer size (16 => 64KB, 17 => 128KB) ●(0) Default panic timeout ●Choose SLAB allocator (SLUB (Unqueued Allocator)) Enable the block layer ?init/Kconfig中source "block/Kconfig":"Enable the block layer" ?块设备层设置 ?重要配置选项 ●Default I/O scheduler (No-op) System Type ?Kconfig中:menu "System Type" ?CPU类型及特性(略) ?重要配置选项(在内核移植部分介绍为何会出现这些选项) ●ARM system type (SEP0718) ●SEP0718 Implementations(EASIC0718) ●Support ARM V6K processor extensions ●Support Thumb user binaries Kernel Features ?Kconfig中:menu "Kernel Features" ?重要配置选项 ●Memory split (3G/1G user/kernel split) ●(4096) Low address space to protect from user allocation Boot options ?Kconfig中:menu "Boot options" ?重要配置选项 ●(0x0) Compressed ROM boot loader base address ●(0x0) Compressed ROM boot loader BSS address ●(root=/dev/mtdblock1 rootfstype=yaffs mem=64mb console=ttyS1,115200 init=/init)

linux内核的移植

基于嵌入式技术linux内核的移植 甄儒钊 (中南民族大学计算机科学学院,智能科学与技术专业,武汉 430074) 摘要在PC端基于ubuntu 12.04通过配置交叉编译环境、安装交叉工具链、设置网络参数、创建tftp 服务器搭建好开发环境,再通过命令行(此处用到的工具为putty)将已有的kernel镜像文件和其配套的设备树文件烧写至开发板(基于arm7体系结构的三星公司生产的cortex系列A9芯片)中,从而实现片上系统的移植,为后续基于嵌入式系统的应用层的开发和外围设备调试等工作做准备。 关键词ubuntu;内核移植;交叉工具链; cortex-A9; tftp;Gcc Transplantation of Linux kernel based on Embedded Technology Ru zhao Zhen (Project of Intelligence Science and Technology, College of Computer Science Technology, South-Central University for Nationalities, Wuhan 430074, China) Abstract Configuring cross compiler environment,network parameter and TFTP server. And installing cross-tool chain by Ubuntu 12.04 In the PC side. Then writing the image files and Flattened Device Tree files by command line into the development board (The chip based on the arm7 architecture and belongs to the Samsung company called cortex-A9) ,in order to achieve the transplantation of the system on chip and prepare for application layer development, debugging of peripheral equipment and so on. Keywords Ubuntu;Kernel porting; Cross tool chain; cortex-A9;tftp;Gcc 科技日新月异,科技无处不在,科技与我们生活紧密相连。以应用为中心,以计算机技术为基础,软硬件可裁剪,能适应众多应用的嵌入式系统,对功耗,可靠性,成本,体积等要求比较严格,因为这些特性,小到手机、智能手表,大到工程机械都离不开嵌入式系统的高效和精准的控制。然而作为嵌入式技术的核心过程之一:内核移植就显得尤为重要。所以此次实验探究了内核移植的详细过程,系统化地了解了主机与目标机互联的机制,对内核源码进行了初步了解,从而使得整个过程更加清晰明了,为嵌入式工程或项目做好充实的准备。 图1 实验用开发板 Fig. 1 Experimental development board

相关文档
相关文档 最新文档