侵权投诉

Zephyr如何在第三方工具链下开启TLS

ZephyrProject 2021-07-05 08:58 次阅读

在Zephyr TLS线程本地存储的实现一文中说明了如何在Zephyr上使用TLS,在这种默认的情况下Zephyr的编译是使用的是Zephyr SDK提供的工具链。

而在一些特殊情况下我们希望使用重新配置编译第三方工具链来编译Zephyr,这就需要配置让第三方工具链支持TLS,并修改Zephyr的Kconifg加入第三方工具链支持TLS.

工具链编译

到https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads下载要用的source code,例如我选择的是gcc-arm-none-eabi-9-2020-q2-update-src.tar.bz2

解压缩后有一个How-to-build-toolchain.pdf文档说明如何编译

安装依赖

我的环境是ubuntu 18.04,安装依赖

1

2

sudo su

apt-get install software-properties-common

add-apt-repository universe

cat 》/etc/apt/sources.list.d/xenial.list 《《EOF

deb http://archive.ubuntu.com/ubuntu xenial main universe

deb-src http://archive.ubuntu.com/ubuntu xenial main universe

deb http://security.ubuntu.com/ubuntu xenial-security main

EOF

dpkg --add-architecture i386

apt-get update

apt-get install -y -t xenial

gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686

apt-get -f install -y

build-essential

autoconf

autogen

bison

dejagnu

flex

flip

gawk

git

gperf

gzip

nsis

openssh-client

p7zip-full

perl

python-dev

libisl-dev

scons

tcl

texinfo

tofrodos

wget

zip

texlive

texlive-extra-utils

libncurses5-dev

exit

修改编译配置项

不需要mingw32,配置为跳过加速编译

1

2

skip_mingw32=yes

skip_mingw32_gdb_with_python=yes

将--disable-tls修改为--enable-tls

gcc-arm-none-eabi默认是关闭tls的,gcc编译代码后访问TLS时使用的是emulated tls,和Zephyr的实现不一致,需要改为--enable-tls

编译

执行下面命令进行编译

1

2

3

。/install-sources.sh

。/build-prerequisites.sh

。/build-toolchain.sh

编译完成后的结果会被打包放在pkg/下, 例如我这里生成的就是gcc-arm-none-eabi-9-2021-q2-x86_64-linux.tar.bz2

在编译gdb的时候可能会提示python有问题,原因是我的默认版本是python3, 需要进行python版本切换gcc-arm-none-eabi-9-2020-q2使用python 2.7, 切换方法见Python2和3切换

第三方工具链配置TLS

使用第三方工具链

将gcc-arm-none-eabi-9-2021-q2-update-x86_64-linux.tar.bz2解压缩,根据解压缩的路径修改~/.zephyrrc如下,Zephyr就会使用第三方工具链进行编译

1

2

export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb

export GNUARMEMB_TOOLCHAIN_PATH=/mnt/d/code/gcc-arm-none-eabi-9-2021-q2-update

修改Zephyr配置

当使用第三方工具链后即使配置了CONFIG_THREAD_LOCAL_STORAGE=y在编译的时候也会提示由于TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE为n而无法TLS, 但由于TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE是Zephyr的隐藏配置项因此无法在prj.conf中配置。

修改方式是在zephyr/kernel/Kconfig中为gnuarmemb添加默认支持TLS

1

2

3

config TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE

bool

default y if (“$(ZEPHYR_TOOLCHAIN_VARIANT)” = “zephyr” || “$(ZEPHYR_TOOLCHAIN_VARIANT)” = “gnuarmemb”)

通过以上修改,用第三方工具链gnuarmemb编译就可以支持Zephyr的TLS。

参考

https://docs.zephyrproject.org/latest/getting_started/toolchain_3rd_party_x_compilers.html

编辑:jq

原文标题:Zephyr在第三方工具链下开启TLS

文章出处:【微信号:ZephyrProject,微信公众号:ZephyrProject】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

在Anaconda中安装python包seaborn

在Anaconda中安装python包seaborn(现代电源技术题库)-在Anaconda中安装p....
发表于 09-18 15:01 5次 阅读
在Anaconda中安装python包seaborn

Python科学计算利器Anaconda

Python科学计算利器Anaconda(开关电源技术毕业设计)-Python科学计算利器Anaco....
发表于 09-18 14:26 7次 阅读
Python科学计算利器Anaconda

MSK调制解调器的matlab仿真

继续讲解程序!MSK也能进行相干解调?是的!同样是采用锁相环!先来看看MSK的优点,这是由于下面的这....
的头像 通信工程师专辑 发表于 09-18 11:43 102次 阅读
MSK调制解调器的matlab仿真

介绍3种方法跨时钟域处理方法

跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者....
的头像 FPGA设计论坛 发表于 09-18 11:33 617次 阅读
介绍3种方法跨时钟域处理方法

机智云追踪外卖骑手保温箱硬件开发和项目演示

01 本章实现功能介绍 追踪外卖骑手的保温箱的GPS定位信息以及外卖箱是否被人打开,以防止骑手在送餐....
的头像 机智云开发者 发表于 09-18 11:03 103次 阅读

深入探究Linux系统噪音统计(osnoise tracer)

在Linux系统中作为一个普通线程是非常苦逼的。不仅NMI 、硬中断、软中断可以打断它,甚至其它普通....
的头像 Linux阅码场 发表于 09-18 10:53 143次 阅读
深入探究Linux系统噪音统计(osnoise tracer)

avr单片机INT0是如何去模拟代码的

avr单片机INT0是如何去模拟代码的?怎样去编写其代码?...
发表于 09-18 06:49 0次 阅读

三菱交流伺服系统伺服故障和报警代码

伺服故障和报警代码大全,超实用!使用三菱交流伺服系统主要由三个系列:MR-ES、MR-J2S、MR-J3。通常故障情况可由伺服...
发表于 09-17 08:54 0次 阅读

如何利用51单片机制作从左至右再从右制作的流水灯呢

如何利用51单片机制作从左至右再从右制作的流水灯呢?如何编写其代码程序?...
发表于 09-17 06:52 0次 阅读

松下伺服报警代码保护功能

《松下伺服故障报警代码分析及处理》由会员分享,可在线阅读,更多相关《松下伺服故障报警代码分析及处理(2页珍藏版)》请在人人文...
发表于 09-17 06:20 0次 阅读

​开发板上玩GTA RISC-V多项移植项目成功运作中

电子发烧友网报道(文/周凯扬)RISC-V近期再度掀起了不小的热度,苹果招募RISC-V程序员负责其....
的头像 电子发烧友网 发表于 09-16 11:59 140次 阅读
​开发板上玩GTA RISC-V多项移植项目成功运作中

如何使用工业树莓派做ython的PWM控制

虹科工业树莓派 准备工作 硬件: 虹科工业树莓派1台 DIO模块1个 Windows系统电脑1台 L....
的头像 广州虹科电子科技有限公司 发表于 09-16 10:57 1088次 阅读
如何使用工业树莓派做ython的PWM控制

嵌入式开发中实用的宏打印函数

宏打印函数在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息....
的头像 FPGA之家 发表于 09-16 10:05 98次 阅读
嵌入式开发中实用的宏打印函数

使用Kotlin替代Java重构AOSP应用

两年前,Android 开源项目 (AOSP) 应用团队开始使用 Kotlin 替代 Java 重构....
的头像 谷歌开发者 发表于 09-16 09:26 101次 阅读
使用Kotlin替代Java重构AOSP应用

Python解释器的基本结构

简介Byterun是一个用Python实现的Python解释器。通过对Byterun的研究,我惊奇地发现Python解释器的基本结构很容易符合500行...
发表于 09-16 06:42 0次 阅读

python爬取猫咪交易数据

最近发现身边朋友开始养猫咪的也来越多了,甚至有的人会花大几千块钱去买一只猫来养。现在很流行养一些比较名贵的猫,比如橘猫、...
发表于 09-15 16:08 0次 阅读

魔方网表,无代码开发平台NCDP的无冕之王

NCDP也就是No-code development platform,无代码开发平台,我第一次听到....
的头像 话说科技 发表于 09-15 14:34 85次 阅读

基于Python-casacore的射电测量集文件生成方法

基于Python-casacore的射电测量集文件生成方法(开关电源技术试卷)-该文档为基于Pyth....
发表于 09-15 13:11 11次 阅读
基于Python-casacore的射电测量集文件生成方法

51单片机的启动文件作用是什么

在我们使用kei c51创建一个51单片机项目时,会有如下图所示的提示: 一般情况下,需要选择“是”....
的头像 嵌入式ARM 发表于 09-15 09:12 181次 阅读
51单片机的启动文件作用是什么

如何充分利用Heroku CI

ci/cd heroku 持续集成和持续交付(CI / CD)是当今软件工程开发过程中的最佳实践。  持续集成 (CI)允许开发人...
发表于 09-15 08:43 0次 阅读

代码生成有哪些用途

代码生成有许多用途:  我们可以从模式或现有信息源中生成重复代码。 例如,我们可以从数据库模式文件生成数据访问对象...
发表于 09-15 08:04 0次 阅读

3200故障代码服务器显示说明

3200故障代码 服务器显示 说 明AT400门机随机文件受控文件编号: AT400-OIM-ZH更 改 记 录序号更改文件号更 改 内 容 描...
发表于 09-15 07:51 0次 阅读

力/力矩传感器的使用

1. 插件的添加在相应的标签内添加如下代码:                  3...
发表于 09-15 06:37 0次 阅读

ROS中导航功能包里路径规划A*算法中步骤和代码详解

一、下载编译功能包   cd ~/catkin_ws/srcsudo apt-get install....
发表于 09-13 16:49 1015次 阅读

符合IEPE标准的CbM机器学习赋能平台

CbM需要捕获全带宽数据,以确保时域和频域中的所有谐波、混叠及其他机械相互作用都得到考虑。这种数据收....
发表于 09-13 12:45 3369次 阅读
符合IEPE标准的CbM机器学习赋能平台

FastThreadLocal快在哪里

blog.csdn.net/mycs2012/article/details/90898128 1 ....
的头像 Android编程精选 发表于 09-13 09:17 132次 阅读

C++基础语法友元类和友元函数

本期是C++基础语法分享的第五节,今天给大家来分享一下: (1)explicit(显式)关键字; (....
的头像 C语言编程学习基地 发表于 09-12 09:52 190次 阅读

一条SQL语句是怎么被执行的

一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一....
的头像 Linux爱好者 发表于 09-12 09:44 168次 阅读
一条SQL语句是怎么被执行的

如何通过Python脚本实现WIFI密码的暴力破解

前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。....
的头像 马哥Linux运维 发表于 09-10 17:09 323次 阅读
如何通过Python脚本实现WIFI密码的暴力破解

北鲲云超算平台助推生物制药行业发展

随着科技进步,生物制药正在被视为改写人类命运的关键。北鲲云超算平台蛋白设计助推生物制药行业发展,提供....
发表于 09-10 14:15 30次 阅读

软件工程师为什么要写文档

在大多数软件工程师对编写、使用和维护代码的抱怨中,一个常见的问题是缺乏高质量的文档。缺乏文档有什么副....
的头像 Linux阅码场 发表于 09-09 11:26 249次 阅读

使用deepstream-test的范例代码修改车牌识别与遮盖

前一篇文章提到使用deepstream-test的范例代码,修改成“车牌识别”与“遮盖(redact....
的头像 NVIDIA英伟达企业解决方案 发表于 09-09 10:04 176次 阅读
使用deepstream-test的范例代码修改车牌识别与遮盖

在STM32G4片内不同存储空间运行的速度差异

最近有人问起程序在STM32G4片内不同存储空间运行的速度差异。说实在的,这个很难说死或说出个绝对的....
的头像 茶话MCU 发表于 09-09 09:57 235次 阅读
在STM32G4片内不同存储空间运行的速度差异

骑手保温箱追踪及温湿度监测4G设备接入机智云教程

01 前言 利用机智云提供的通用版App即使不懂云和App开发,也可以在不用写任何代码的情况下,轻松....
的头像 机智云开发者 发表于 09-09 09:16 147次 阅读
骑手保温箱追踪及温湿度监测4G设备接入机智云教程

Kitronik ARCADE游戏手柄实现连连看

连连看相信大家都玩过,但这个用Kitronik AR CADE游戏手柄来玩连连看的项目你相信是一个高....
的头像 电子森林 发表于 09-08 11:47 223次 阅读
Kitronik ARCADE游戏手柄实现连连看

如何把Docker Registry迁移到Harbor

“要如何将 docker registry 中的镜像迁移至 harbor?本文介绍了四种具体的思路和....
的头像 马哥Linux运维 发表于 09-07 16:29 300次 阅读
如何把Docker Registry迁移到Harbor

最为精简的一个Linux Fork炸弹解析

转自:http://blog.saymagic.cn/2015/03/25/fork-bomb.ht....
的头像 Linux爱好者 发表于 09-07 16:12 115次 阅读

如何在环境安装使用Python操作word

作者丨超级大洋葱806 https://tangxing.blog.csdn.net/article....
的头像 Android编程精选 发表于 09-05 15:13 438次 阅读
如何在环境安装使用Python操作word

使用Intellij IDEA的一些小技巧

https://blog.csdn.net/linsongbin1/article/details/....
的头像 Android编程精选 发表于 09-05 15:03 318次 阅读

内联汇编代码中的关键语法规则讲解

一、基本 asm 格式 1. 语法规则 2. test1.c 插入空指令 3. test2.c 操作....
的头像 硬件攻城狮 发表于 09-05 09:46 227次 阅读

如何利用Python抓取用户发的话题

大多数APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,抓取超....
的头像 马哥Linux运维 发表于 09-05 09:37 218次 阅读
如何利用Python抓取用户发的话题

C语言代码中的extern

在你的C语言代码中,不知能否看到类似下面的代码: 这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们....
的头像 STM32嵌入式开发 发表于 09-02 15:13 205次 阅读
C语言代码中的extern

你们知道指针和引用正确的使用场景吗

先解决两个疑问 ◆ 指针和引用的不同之处是什么? ◆ 何时用用指针?何时用引用? 指针和引用的不同之....
的头像 STM32嵌入式开发 发表于 09-02 14:37 180次 阅读
你们知道指针和引用正确的使用场景吗

Vivado调用Questa Sim或ModelSim仿真小技巧

Vivado调用Questa Sim或ModelSim仿真中存在的一些自动化问题的解决方案。 Viv....
的头像 FPGA之家 发表于 09-02 10:12 203次 阅读
Vivado调用Questa Sim或ModelSim仿真小技巧

比Arduino更简单易用的开发套件ShineBlink

Hi 机友们,我想向你推荐一个小而美的产品,一个比Arduino更简单易用的开发套件——ShineB....
的头像 机智云物联网 发表于 09-02 10:04 578次 阅读

Go编译器已默认启用-G=3支持泛型

Go 项目代码仓库昨日提交和合并的一个 PR 显示,Go 语言已在 cmd/compile 中默认启....
的头像 马哥Linux运维 发表于 09-01 15:52 1210次 阅读
Go编译器已默认启用-G=3支持泛型

分享一个最新的的Python对象序列化方式

许多Python标准库都有一些未被赏识的精华。其中之一是允许简单优雅的基于参数类型的函数分发。这一特....
的头像 马哥Linux运维 发表于 09-01 15:19 674次 阅读
分享一个最新的的Python对象序列化方式

Go常用的加密算法详细解读

【导读】本文介绍了常用的加密算法,并对这些加密算法结合实际 golang 代码段进行了详细解读。 前....
的头像 开关电源芯片 发表于 09-01 14:47 127次 阅读

一文透析Nginx-ingress 控制器如何实现的

主机nginx 一般nginx做主机反向代理(网关)有以下配置 upstream order{ se....
的头像 Linux爱好者 发表于 09-01 14:44 869次 阅读
一文透析Nginx-ingress 控制器如何实现的

代码中是数学图像解法和贪心解法

今天讲一个贪心的老司机的故事,就是力扣第 134 题「加油站」: 题目应该不难理解,就是每到达一个站....
的头像 新材料在线 发表于 09-01 14:14 197次 阅读
代码中是数学图像解法和贪心解法

jsonpath库中的常规功能介绍

1 简介 在日常使用Python的过程中,我们经常会与json格式的数据打交道,尤其是那种嵌套结构复....
的头像 Linux爱好者 发表于 09-01 14:11 186次 阅读
jsonpath库中的常规功能介绍

如何才能够翻转二叉树

这道题目是非常经典的题目,也是比较简单的题目(至少一看就会)。 但正是因为这道题太简单,一看就会,一....
的头像 新材料在线 发表于 09-01 11:45 221次 阅读

Python 代码加速运行的的小技巧

Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,....
的头像 Android编程精选 发表于 09-01 11:28 245次 阅读

K8S集群服务访问失败怎么办 K8S故障处理集锦

问题1:K8S集群服务访问失败?     原因分析:证书不能被识别,其原因为:自定义证书,过期等。 ....
的头像 开关电源芯片 发表于 09-01 11:11 248次 阅读
K8S集群服务访问失败怎么办 K8S故障处理集锦

ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init

ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init(电源技术投稿模版)-ADI-b....
发表于 08-31 11:28 23次 阅读
ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init

C语言冒泡排序工程代码汇总

C语言冒泡排序工程代码汇总
发表于 08-30 11:06 24次 阅读