编译broadcom SDK

2023-05-16

以arm 为列来说明,如何编译broadcom SDK。

(1)     添加一个新的目录

mkdir –p $SDK/systems/linux/kernel/

<platform>代表你平台的名称,最好带上内核版本。例如:arm-2_6。

(2)     拷贝并修改Makefile

拷贝相应的Makefile文件到$SDK/systems/linux/kernel/<platform>

这里拷贝systems/linux/kernel/x86-generic-2_6/Makefile到$SDK/systems/linux/kernel/<platform>。把Makefile里面的platform=x86-generic-$(kernel_version)修改成platform=arm-$(kernel_version)。

(3)     添加$SDK/make/Makefile.linux-<platform>

在$SDK/make目录找一个相近的Makefile.linux-<platform>文件,最好是同一平台,在这里我用Makefile.linux-rsx-3_6作为我的Makefile.linux-<platform>。然后修改Makefile.linux-<platform>文件。主要是修改TOOLCHAIN_BASE_DIR、TARGET_ARCHITECTURE、KERNDIR,KFLAGS等等。具体修改如下。

51c51

< TOOLCHAIN_BASE_DIR:=/projects/ntsw-tools/linux/iproc_ldks/ldk36/iproc

---

> TOOLCHAIN_BASE_DIR:=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux

54c54

< TARGET_ARCHITECTURE:=arm-broadcom-linux-uclibcgnueabi

---

> TARGET_ARCHITECTURE:=arm-linux-gnueabihf

57c57

< KERNDIR:=$(TOOLCHAIN_BASE_DIR)/kernel/linux-custom

---

> KERNDIR:=/home/work/cubietrunk/kernel-source/

64,66c64,66

< TOOLCHAIN_BIN_DIR=$(TOOLCHAIN_BASE_DIR)/buildroot/usr/bin

< overridePATH:=$(TOOLCHAIN_BASE_DIR)/buildroot/usr/$(TARGET_ARCHITECTURE)/bin:$(TOOLCHAIN_BIN_DIR):$(PATH)

<LD_LIBRARY_PATH=$(TOOLCHAIN_BASE_DIR)/buildroot/usr/lib

---

> TOOLCHAIN_BIN_DIR=$(TOOLCHAIN_BASE_DIR)/bin

> overridePATH:=$(TOOLCHAIN_BASE_DIR)/$(TARGET_ARCHITECTURE)/bin:$(TOOLCHAIN_BIN_DIR):$(PATH)

>LD_LIBRARY_PATH=$(TOOLCHAIN_BASE_DIR)/lib

97c97

< KFLAG_INCLD =$(TOOLCHAIN_BASE_DIR)/buildroot/usr/lib/gcc/$(TARGET_ARCHITECTURE)/4.7.2/include

---

> KFLAG_INCLD =$(TOOLCHAIN_BASE_DIR)/lib/gcc/$(TARGET_ARCHITECTURE)/4.8.2/include

100c100

< KFLAGS := -D__LINUX_ARM_ARCH__=7-D__KERNEL__ -nostdinc  -isystem$(KFLAG_INCLD) -I$(LINUX_INCLUDE) -include $(LINUX_INCLUDE)/linux/version.h-include $(LINUX_INCLUDE)/generated/autoconf.h -I$(KERNDIR)/arch/arm/include-I$(KERNDIR)/arch/arm/include/generated-I$(KERNDIR)/arch/arm/mach-northstar/include-I$(KERNDIR)/arch/arm/plat-iproc/include -Wall -Wstrict-prototypes-Wno-trigraphs -Os -fno-strict-aliasing -fno-common -marm -mabi=aapcs-linux-fno-pic -pipe -msoft-float -ffreestanding -march=armv7-a -mfpu=vfp-mfloat-abi=softfp -fomit-frame-pointer -g -fno-stack-protector-Wdeclaration-after-statement -Wno-pointer-sign -mlong-calls

---

> KFLAGS := -D__LINUX_ARM_ARCH__=7-D__KERNEL__ -nostdinc  -isystem$(KFLAG_INCLD) -I$(LINUX_INCLUDE) -include $(LINUX_INCLUDE)/linux/version.h-include $(LINUX_INCLUDE)/generated/autoconf.h -I$(KERNDIR)/arch/arm/include-I$(KERNDIR)/arch/arm/include/generated-I$(KERNDIR)/arch/arm/mach-sun7i/include-I$(KERNDIR)/arch/arm/plat-sunxi/include -Wall -Wstrict-prototypes-Wno-trigraphs -Os -fno-strict-aliasing -fno-common -marm -mabi=aapcs-linux-fno-pic -pipe -msoft-float -ffreestanding -march=armv7-a -mfpu=vfp-mfloat-abi=softfp -fomit-frame-pointer -g -fno-stack-protector-Wdeclaration-after-statement -Wno-pointer-sign -mlong-calls

104c104

< include${SDK}/make/Makefile.linux-kernel-3_6

---

> include${SDK}/make/Makefile.linux-kernel-2_6

这里之所以用Makefile.linux-kernel-2_6,是因为目前的broadcom SDK只分2.4版本和2.6版本,没有支持3.x版本,它这里的版本没有要求和内核版本严格对上。2.4版本编译的模块文件是.o,2.6版本编译的模块文件是.ko文件。内核是3.x版本的就直接用2.6版本即可。

注意,修改一下${SDK}/make/Makefile.linux-kernel-2_6,把BCM_CFLAGS   = -Wall -Werror修改成BCM_CFLAGS   = -Wall,即去掉-Werror,不然编译不过。

(4)     编译内核模块

cd $SDK/systems/linux/kernel/<platform>

gmake

(5)     编译过程中的错误

$SDK /systems/linux/kernel/user/shared/bcm-uk-rtrans.c

$SDK /systems/linux/kernel/user/shared/bcm-uk-trans.c

会报argument to‘sizeof’ in ‘memset’ call is the same expression as the destination; did youmean to provide an explicit length? [-Werror=sizeof-pointer-memaccess]的错误,把

memset(data, 0, sizeof(data));改成相应的memset(data, 0, sizeof(*data));。

类似的错误都可以这样修改。

其中,$SDK代表你自己的SDK目录,注意要修改自己的内核头文件和交叉编译器工具链的路径。

编译成功后,在$SDK/systems/linux/kernel/<platform>目录下,会有linux-kernel-bde.ko、liunux-bcm-core.ko、linux-bcm-uk-proxy.ko、linux-bcm-diag.ko、linux-bcm-net.ko 、linux-bcm-diag-full.ko,bcm.user.proxy等文件。

(6)     裁剪SDK

liunux-bcm-core.ko文件很大,有40M左右,因为默认情况下支持所有的Strata switch andfabric chips和phy,可以通过配置${SDK}/make/Make.local来裁剪一下,只支持你所用的芯片和phy。

首先需要cp ${SDK}/make/Make.local.template${SDK}/make/Make.local,然后修改Make.local。定义chip的变量:BCM_PTL_SPT=1,BCM_5389_A0 = 1(对应的芯片,这里只是举例)打开。定义phy的变量是BCM_PHY_LIST, BCM_PHY_LIST=5482(举例)。

还有FEATURE_LIST, NO_SAL_APPL等等,都可以裁减。具体的功能可以见/Make.local里面的注释,不过,需要注意的是,有些变量有依赖关系的,不是随意可以去掉了。如果在编译过程有问题,可以看源代码,推断出相应的关系。

在Makefile里可以把相关变量打印出来。举例:在Make.config里定义BCM_PHY_LIST的后面添加着两句。

$(warning BCM_PHY_LIST is $(BCM_PHY_LIST))

$(warning CFGFLAGS is $(CFGFLAGS))

(7)     重新编译

cd $SDK/systems/linux/kernel/<platform>

先make clean一下,再 gmake。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译broadcom SDK 的相关文章

  • 通过 Android SDK 管理器下载 SDK 速度慢

    当我运行Android SDK管理器下载SDK平台时 下载速度为8 KiB s 像Android 2 2 API 8这样的平台下载需要2个多小时 通过浏览器下载东西是没有问题的 有谁知道如何解决这个问题 我没有遇到过这个问题 强制或取消强制
  • eclipse appcompat->res->drawable-xxxhdpi 错误

    我刚刚将我的日食更新为SDK 21 我知道每次我创建项目时 Eclipse 也会创建名为appcompat v7 但是appcompat v7显示错误在res drawable xxxhdpi文件夹 这也使我的项目出错 并在控制台显示此警报
  • 如何自动加载键盘(iOS SDK)?

    非常简单的问题 我得到一个由两个文本字段组成的视图 当视图加载时 我希望键盘自动弹出并聚焦第一个字段 我怎么做 在代码中 在 IB 中 多谢 芥末 In your viewDidAppear 方法调用 yourTextField becom
  • Flutter SDK 使用哪个渠道?

    预览版 1 的公告位于 宣布 Flutter 发布预览 1 Flutter Medium https medium com flutter io flutter release preview 1 943a9b6ee65a 下载 Flutt
  • 使用 facebook android SDK 的 FQL

    我正在尝试使用 facebook android SDK 创建一个 android 应用程序 http github com facebook facebook android sdk http github com facebook fa
  • 如何为 eclipse 和 android studio 提供单一的 android SDK 和 AVD

    我是 Eclipse 用户 并在其上轻松开发了 Android 应用程序 但最近 当我看到 android studio 出现并由 android 网站提供时 我想尝试一下 因为它看起来非常有前途 我已经在我的 D 盘中下载了 androi
  • 如何使用Android SDK插件?

    任何人都可以分享一些开发新 SDK 附加组件 例如 Google 地图 API 的详细信息吗 我没有找到有关如何构建新 SDK 附加组件的任何详细信息 使用 SDK 插件连接到 Twitter Facebook YouTube 应用程序是个
  • 为什么Android Studio 1.0 rc会开始下载Android SDK而不检测是否存在?

    我已经在我的 Archlinux 盒子里安装了 Android Studio 1 0 rc 和 Android SDK 但是当我尝试创建一个新的Android应用程序时 AS会尝试直接从dl ssl google com下载另一组SDK 我
  • 在 MKStoreKit 的应用程序购买中失败:“产品的 iTunes 连接配置出现问题:xxx”

    我正在尝试使用 MKStoreKit 在我的应用程序中实现应用程序内购买 我已按照所有步骤操作 但出现错误 产品的 iTunes 连接配置问题 我重新创建了配置文件 检查了产品 ID 是否与 iTunes 连接中的相同 发送并拒绝了二进制文
  • iphone SDK:将图像从iphone上传到php服务器发送空文件?(内部示例代码链接)

    我尝试通过 PHP 将照片和 GPS 位置发送到服务器 这是 PHP 部分 从这里复制 http www w3schools com PHP php file upload asp保存上传的文件 上面的示例在服务器上的 PHP 临时文件夹中
  • iOS SDK Hue 飞利浦与 Swift

    我尝试在 Objective C 中为 Hue 导入 iOS SDK 我按照这里的说明进行操作 https github com PhilipsHue PhilipsHueSDK iOS OSX https github com Phili
  • 如何设置IntelliJ IDEA项目SDK

    我刚刚安装了 IntelliJ IDEA 当我尝试创建我的第一个项目时 它要求我设置项目 SDK 当我单击 JDK 时 它要求我选择 JDK 的主目录 如下图所示 我无法找到它在哪里 对于新项目 选择 jdk 的主目录 eg C Java
  • 安全移动 Microsoft SDK 文件夹

    我的硬盘上有一个文件夹 C Program Files Microsoft SDKs 我想知道将其移动到外部驱动器是否安全 Visual Studio 或任何其他工具是否依赖于此特定文件夹 注册表中有相当多的条目 至少在我的注册表中 指向该
  • .NET 3.5 SDK 位于哪里?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 谁能提供下载 NET 3 5 SDK 的链接吗 我检查了微软网站和谷歌 但找不到这个的下
  • 线程 1:信号 SIGABRT

    当我为 Xcode 项目运行模拟时出现上述错误 这出现在 O abort with payload 文件中 dyld abort with payload 0x10aae66f8 lt 0 gt movl 0x2000209 eax imm
  • 如何将我的应用程序的目标 API 级别从 23 更改为 26

    当我尝试将我的应用程序上传到 Google Play 控制台时遇到问题 API 级别必须为 26 而我的应用程序刚刚使用 23 版本开发 现在我不知道如何从 23 更改此 API 版本到 26 使其正常工作 请帮帮我 Steps Go to
  • Android Studio:Gradle 构建错误,无法找到 SDK 和编译服务器

    我是 Android Studio 的新用户 在尝试将 Android Studio 项目导入其他 PC 上的 Android Studio 时遇到严重问题 一般来说 我的 Gradle 不想构建项目 这是由路径问题引起的 错误日志 Fai
  • 如何使 UITextView 像 Notes 应用程序一样使用文本展开

    如何使 UITextView 随其内部的文本展开 你可以试试这个 UITextView textView your UITextView NSString text the text that you want to place in th
  • Android Studio 调试失败,错误:任务 ':app:preDexDebug'.Pl 执行失败

    当我运行我的项目时 它在标题中显示错误 解决办法是什么 apply plugin com android application android compileSdkVersion 24 buildToolsVersion 24 0 0 d
  • 使用 C# 获取 ec2-instance 标签

    我不是开发人员 所以也许答案是有不同的解决方案 但我无法真正从 python 或其他东西翻译它 我尝试使用 AWS NET SDK 查找实例 然后获取实例的标签 我已经能够确定实例是否已启动并正在运行 我还了解了如何创建和删除标签 不在下面

随机推荐