Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1071517
  • 博文数量: 71
  • 博客积分: 3078
  • 博客等级: 少校
  • 技术积分: 945
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-16 20:10
个人简介

此博客已停用 个人博客: Mangogeek.com

文章分类
文章存档

2016年(1)

2015年(32)

2014年(25)

2011年(13)

分类: LINUX

2015-08-17 15:54:04

配置开发环境

请参考其他文献设置开发环境. 前几篇恰好写过.

简单介绍下 quilt 工具, quilt 是用来管理代码树中的 patch 的, 嵌入式内核开发利器!

请通过软件包管理器安装 quilt. 然后写入以下配置文件到 ~/.quiltrc

QUILT_DIFF_ARGS="--no-timestamps --no-index -pab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="vi"
最后一句EDITOR="xxx",xxx是你自己喜欢的编辑器
		

准备工作

假定 ~/openwrt 是你的开发目录, 建议直接在 git branch 下开发.

假设之前已经编译过 bin, 有完整的 .config 和 toolchain.

建立开发 branch: (git 教程自行脑补)

~/openwrt$ git checkout -b add-tl-mr10u-support 

清理 tmp 目录!!!!!! 这个是大个坑. 直接删除.

~/openwrt$ rm -rvf tmp/ 
修改 OpenWrt 代码

进入设备硬件目录:

~/openwrt$ cd target/linux/ar71xx 

修改以下文件, 里面涉及到 TL-MR10U 固件中设备ID的部分, 是 0x00100101, 这个值从 tp-link 官方网站下载的固件中可以获得.

    - base-files/etc/diag.sh
    - base-files/etc/uci-defaults/02_network
    - base-files/lib/ar71xx.sh
    - base-files/lib/upgrade/platform.sh
    - config-3.8
    - generic/profiles/tp-link.mk
    - image/Makefile

新建文件: files/arch/mips/ath79/mach-tl-mr10u.c , 内容参考 TL-WR703N 设备的文件 mach-tl-wr703n.c, 修改所有出现 wr703n, WR703N 等等大小写混合的部分, emacs 无痛苦完成.


添加 Linux patch

这里就完成了 OpenWrt 的设备支持代码. 为了支持我们的设备, Linux 代码树的部分文件也需要做改动, OpenWrt 采用了 patch 的方式实现.

回退到根目录 ~/openwrt .

清理并准备 patch 树:

~/openwrt$ make target/linux/{clean,prepare} # 后面可加 V=s QUILT=1 参数, 表示静默无输出 

进入内核代码目录(其中版本号可能与你的不一致):

~/openwrt$ cd build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.8.12/ 

这里就是内核代码树了, 里面的代码是已经打过所有 patch 的, 可以用 quilt push 检查看是不是这样:

$ quilt push
File series fully applied, ends at patch platform/902-unaligned_access_hacks.patch 

这条输入也告诉我们, 当前最顶的 patch 是 platform/902 (这个是坑啊, 官方文档不带 platform 前缀, 是错的).

为我们的 TL-MR10U 新建个 patch:

$ quilt new platform/920-add-tl-mr10u-support.patch 

选择的数字需要大于刚才的那个 902, 然后 quilt 会自动把这个 patch 设置为当前 patch, 所有的改动都针对这个 patch.

然后就是增加代码了

$ quilt edit arch/mips/ath79/Kconfig
$ quilt edit arch/mips/ath79/Makefile
$ quilt edit arch/mips/ath79/machtypes.h 

至于怎么改, 参考这些文件里其他硬件的配置, 基本上说 copy TL-WR703N 的就可以了. 保证不重不漏.

然后验证下修改的内容:

$ quilt diff # 查看 diff
$ quilt refresh # 保存所有 diff 到 patch 文件 

这个时候我们的 patch 文件还在 build_dir 里, 大概位置是 patches/platform/ 下. 需要同步到 OpenWrt 代码树.

# 退回到顶层工作目录, 执行:
~/openwrt$ make target/linux/update V=s 

同步完成后, patch 文件会出现在 target/linux/ar71xx/patches-3.8/ 下.


阅读(3596) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~