Openwrt 新增平台编译

本文介绍如何在OpenWrt系统中新增SC9820平台进行编译的过程,包括准备开发环境、创建平台框架、配置内核及系统、编译固件等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 说明

本文主要介绍,如何在openwrt系统中,新增一个平台进行编译。如原本的openwrt 包含了adm5120 arc770 ath25 imx6等平台,现在需要新增一个sc9820平台的编译。本文以sc9820平台作为示例说明。

2 开发环境

1、软件环境:ubuntu14.04
2. openwrt版本:openwrt 官方15.05版本SDK开发包(CHAOS CALMER 15.05版本)
3、供应商提供可编译的sc9820 内核包。
4、linux官网的 linux-3.10.65原生内核包。

3 操作步骤

3.1 进入openwrt 的linux开发目录

path1 为openwrt的目录路径

cd  /path1/openwrt/target/linux/

3.2 随便拷贝一个现成的平台作为sc9820的框架

cp -r imx/ sc9820

3.3 清空file文件夹和patch文件夹内容

(1)file文件夹为平台的内核包,与原生版本内核包相比,新增的内容。
(2)patch 文件夹,为平台的内核包与原生的内核包相比,文件的差异,是补丁包。
其中由于该版本imx的内核包采用的为linux-4.4版本,文件夹名称为file-4.4 、patches-4.4。
直接清空两个文件夹,并将文件夹该名称。

rm  file-4.4/* -rf
rm  patches-4.4/* -rf

由于sc9820的内核包采用Linxu-3.10.65,故文件夹名称更改。

mv   file-4.4/   file-3.10
mv   patches-4.4/  patches-3.10

3.4 拷贝内核包的config

3.4.1 将供应商提供的内核包,制作.config

cd  /path2/kernel_sc9820

path2为自己存放sc9820内核包的路径

cp  arch/arm/configs/sp9820w_6c10_defconfig  .config
make menuconfig ARCH=arm  CROSS_COMPILE=arm-none-linux-gnueabi-

当然,如果之前已经把ARCH 和CROSS_COMPILE 环境变量export出来,则可以不加这两个参数
然后保存退出,此时内核配置已经保存至.config

3.4.2 拷贝config 文件至openwrt目录

cd   /path1/openwrt/target/linux/sc9820
cp  /path2/kernel_sc9820/.config  config-3.10

3.4.3 删除之前多余的config

之前拷贝目录,有config-4.4,此时多余,删除该配置

rm config-4.4

3.5 修改编译makefile

cd  /path1/openwrt/target/linux/
vi Makefile

将Makefile的部分内容修改为如下

BOARD:=sc9820
BOARDNAME:=board sc9820

KERNEL_PATCHVER:=3.10.65

3.6 配置系统config

cp configs/imx6ul/imx6ul-prolin2-defconfig .config  

如果自己没有单独保存这个imx6ul的配置,则可忽略这步,自己再去配置其他选项。

make menuconfig

然后在菜单页面中,选择
Target System 选择为board sc9820
Subtarget 选择为 sc9820_pax
然后在Kernel modules —> 中,把所有的内核模块删除
最后保存退出。

3.7 对内核进行配置

make kernel_menuconfig

然后保存退出。
特别注意,一定要执行这一步,不然在编译内核的时候,会提示:

scripts/kconfig/conf --silentoldconfig Kconfig
*
* Restart config...
*
*

这是因为内核初次没有配置的原因,如果执行了make kernel_menuconfig
,则会将配置写入内核中。
对于内核,可以先测试是否可以正常编译

make target/linux/compile V=s

3.8 编译固件

make V=s

3.9 保存配置.config

cd configs
mkdir sc98290
cd  ../
cp   .config   configs/sc9820/
随着微电子技术、传感器技术和嵌入式系统的发展和完善,微型化、低功耗传感器的成本大幅度下降,能力显著提升,从而促进了无线传感器网络的快速发展。无线传感器网络主要应用于军事战场、科学研究、商业应用、工业控制、环境保护等领域,具有多方面的应用价值和广泛的应用前景。   移动感知网是部署在特定区域中的无线传感器网络,该网络利用无线路由器与特定区域内的多种异构网络互连,从而及时地与数据中心交互。因此,适用于特定区域的无线传感器网络路由协议以及能够支持该协议的无线路由器是移动感知网的核心技术。   本课题来源于国家高新技术领域项目“移动计算系统接口与集成技术”,课题的目的是为无线路由器添加对移动感知网路由协议的支持。为此,在本课题中,首先研究了无线传感器网络路由协议;然后研究分析了嵌入式路由器操作系统OpenWrt的网络体系结构以及网络协议的实现方式;最后,以 OpenWrt平台,设计实现了适用于特定环境的无线传感器网络路由协议HITSENET,并对HITSENET路由模块进行了全面测试,测试结果说明HITSENET实现完全符合设计目标。   本课题的工作成功地在无线路由器操作系统中添加了一个新的网络协议,增加了路由器的功能,为无线传感器网络提供了一个连接外界网络的接口,从而为无线传感器网络进一步的应用研究打下了坚实的基础。
### 如何在OpenWRT中添加新的软件包 #### 准备工作 为了向 OpenWrt 添加新软件包,开发者通常会创建一个新的目录来容纳该软件包的相关文件。对于名为 `helloworld` 的简单示例外,结构如下所示[^3]: ``` helloworld/ ├── Makefile └── src ├── helloworld.c └── Makefile ``` 其中根目录下的 `Makefile` 是用于定义编译规则的关键配置文件。 #### 创建Makefile 编写适用于目标程序的顶层 `Makefile` 文件非常重要。此文件应遵循特定语法并包含必要的元数据以及构建指令。下面是一个简化版的例子,展示了如何设置这个重要的文件[^1]: ```makefile include $(TOPDIR)/rules.mk PKG_NAME:=helloworld PKG_VERSION:=1.0 PKG_RELEASE:=1 include $(INCLUDE_DIR)/package.mk define Package/helloworld SECTION:=utils CATEGORY:=Utilities TITLE:=Hello world example program endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) endef $(eval $(call BuildPackage,helloworld)) ``` 这段脚本指定了关于待打包的应用的一些基本信息,并且设定了编译过程中的具体操作。 #### 配置环境变量与工具链 确保已经安装好适合于所选架构的交叉编译器和其他依赖项。这一步骤可能涉及到下载预建好的 SDK 或者手动配置整个开发环境。 #### 执行编译命令 当一切准备就绪后,在源码树顶部执行相应的 make 命令即可触发仅对该单个软件包的构建流程。例如,如果想要单独构建 CUPS 软件包,则可以这样做: ```bash make package/cups/{clean,compile} V=s ``` 这里使用了大写的 `V=s` 参数让输出更加详尽以便调试之用;而花括号内的两个动作分别代表清理旧版本和实际编译最新代码。 #### 更新系统配置 一旦成功制作好了自定义固件映像或是独立 deb 包形式的新组件,就可以通过上传至路由器内部存储空间再利用 opkg 工具来进行在线安装。另外一种情况是在设备上直接修改 UCI 设置以反映新增服务的存在,比如更改 LAN 接口 IP 地址就需要这么做[^2]: ```bash uci set network.lan.ipaddr="192.168.2.1" uci commit ``` 上述命令序列完成了对指定网络接口地址属性值更新的动作,并保存变更到持久化数据库里去。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值