0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Zephyr如何在第三方工具鏈下開(kāi)啟TLS

ZephyrProject ? 來(lái)源:HalfCoder ? 作者: lgl88911 ? 2021-07-05 08:58 ? 次閱讀

在Zephyr TLS線程本地存儲(chǔ)的實(shí)現(xiàn)一文中說(shuō)明了如何在Zephyr上使用TLS,在這種默認(rèn)的情況下Zephyr的編譯是使用的是Zephyr SDK提供的工具鏈。

而在一些特殊情況下我們希望使用重新配置編譯第三方工具鏈來(lái)編譯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

解壓縮后有一個(gè)How-to-build-toolchain.pdf文檔說(shuō)明如何編譯

安裝依賴

我的環(huán)境是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

修改編譯配置項(xiàng)

不需要mingw32,配置為跳過(guò)加速編譯

1

2

skip_mingw32=yes

skip_mingw32_gdb_with_python=yes

將--disable-tls修改為--enable-tls

gcc-arm-none-eabi默認(rèn)是關(guān)閉tls的,gcc編譯代碼后訪問(wèn)TLS時(shí)使用的是emulated tls,和Zephyr的實(shí)現(xiàn)不一致,需要改為--enable-tls

編譯

執(zhí)行下面命令進(jìn)行編譯

1

2

3

。/install-sources.sh

。/build-prerequisites.sh

。/build-toolchain.sh

編譯完成后的結(jié)果會(huì)被打包放在pkg/下, 例如我這里生成的就是gcc-arm-none-eabi-9-2021-q2-x86_64-linux.tar.bz2

在編譯gdb的時(shí)候可能會(huì)提示python有問(wèn)題,原因是我的默認(rèn)版本是python3, 需要進(jìn)行python版本切換gcc-arm-none-eabi-9-2020-q2使用python 2.7, 切換方法見(jiàn)Python2和3切換

第三方工具鏈配置TLS

使用第三方工具鏈

將gcc-arm-none-eabi-9-2021-q2-update-x86_64-linux.tar.bz2解壓縮,根據(jù)解壓縮的路徑修改~/.zephyrrc如下,Zephyr就會(huì)使用第三方工具鏈進(jìn)行編譯

1

2

export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb

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

修改Zephyr配置

當(dāng)使用第三方工具鏈后即使配置了CONFIG_THREAD_LOCAL_STORAGE=y在編譯的時(shí)候也會(huì)提示由于TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE為n而無(wú)法TLS, 但由于TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE是Zephyr的隱藏配置項(xiàng)因此無(wú)法在prj.conf中配置。

修改方式是在zephyr/kernel/Kconfig中為gnuarmemb添加默認(rèn)支持TLS

1

2

3

config TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE

bool

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

通過(guò)以上修改,用第三方工具鏈gnuarmemb編譯就可以支持Zephyr的TLS。

參考

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68234
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    648

    瀏覽量

    32775
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375

原文標(biāo)題:Zephyr在第三方工具鏈下開(kāi)啟TLS

文章出處:【微信號(hào):ZephyrProject,微信公眾號(hào):ZephyrProject】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件

    # 鴻蒙Flutter 實(shí)戰(zhàn):使用第三方插件 在鴻蒙Flutter開(kāi)發(fā)中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,一種是自己編寫原生ArkTS代碼,在Dart側(cè)調(diào)用。另外一種
    發(fā)表于 10-22 21:54

    維天地低代碼開(kāi)發(fā)平臺(tái)助力第三方質(zhì)檢行業(yè)數(shù)據(jù)可視化

    第三方檢驗(yàn)是由獨(dú)立于買賣雙方利益之外的第三方機(jī)構(gòu)(例如專業(yè)的監(jiān)督檢驗(yàn)機(jī)構(gòu))執(zhí)行的,這些機(jī)構(gòu)以公正、公平、權(quán)威的非當(dāng)事人身份,依據(jù)雙方共同認(rèn)可的法律、標(biāo)準(zhǔn)和合同等進(jìn)行商品的符合性檢驗(yàn)和認(rèn)證活動(dòng)
    的頭像 發(fā)表于 08-09 13:59 ?228次閱讀
    <b class='flag-5'>三</b>維天地低代碼開(kāi)發(fā)平臺(tái)助力<b class='flag-5'>第三方</b>質(zhì)檢行業(yè)數(shù)據(jù)可視化

    請(qǐng)問(wèn)esp8266會(huì)開(kāi)放使用第三方云服務(wù)器嗎?

    如題,esp8266會(huì)開(kāi)放使用第三方云服務(wù)器嗎,如百度,阿里云服務(wù)器?
    發(fā)表于 07-12 11:40

    x-ray射線無(wú)損檢測(cè)第三方檢測(cè)機(jī)構(gòu)廠家

    樣的背景,X-ray射線無(wú)損檢測(cè)技術(shù)以其獨(dú)特的優(yōu)勢(shì),在第三方檢測(cè)機(jī)構(gòu)中脫穎而出,成為保障產(chǎn)品質(zhì)量、守護(hù)安全底線的重要利器?!究萍贾?,透視未來(lái)】X-ray射線無(wú)損
    的頭像 發(fā)表于 07-09 16:36 ?394次閱讀
    x-ray射線無(wú)損檢測(cè)<b class='flag-5'>第三方</b>檢測(cè)機(jī)構(gòu)廠家

    是否有可能在支持gdb的第三方集成開(kāi)發(fā)環(huán)境中使用DAS配置調(diào)試?

    是否有可能在支持 gdb 的第三方集成開(kāi)發(fā)環(huán)境中使用 DAS 配置調(diào)試?
    發(fā)表于 07-02 07:29

    微軟或?qū)㈤_(kāi)放Xbox主機(jī)授權(quán)給第三方廠商

    據(jù)悉,5 月 26 日,知名媒體 Windows Central 的編輯 Jez Corden 揭露了微軟即將遵循第三方手柄流程,允許在其 XBOX 主機(jī)上引入第三方產(chǎn)品。
    的頭像 發(fā)表于 05-27 15:18 ?604次閱讀

    MacPaw將在歐盟成員國(guó)推出第三方應(yīng)用商店Setapp

    5月14日,MacPaw正式宣布將在今年5月14日在歐盟成員國(guó)面向蘋果iPhone推出第三方應(yīng)用商城Setapp。自今年2月起,MacPaw已著手籌備該平臺(tái)。S
    的頭像 發(fā)表于 05-14 10:14 ?324次閱讀

    谷歌開(kāi)放ZenDeviceEffects API,助第三方應(yīng)用實(shí)現(xiàn)睡前屏幕管理

    據(jù)報(bào)道,谷歌近日在安卓 15 開(kāi)發(fā)者預(yù)覽版 2 中推出了全新 ZenDeviceEffects API,允許第三方應(yīng)用訪問(wèn)數(shù)字健康的就寢模式功能。
    的頭像 發(fā)表于 05-08 16:41 ?443次閱讀

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個(gè)問(wèn)題,這個(gè)第三方軟件必須手動(dòng)拖到容器正中間,手動(dòng)最大化。請(qǐng)問(wèn)有什么方法可以自動(dòng)實(shí)現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    微軟或?qū)⒁?b class='flag-5'>第三方數(shù)字游戲商店至Xbox平臺(tái)

    微軟選擇引入這些第三方游戲平臺(tái),一面可以增加自身?yè)碛械挠布Y源和服務(wù)優(yōu)勢(shì);另一面,也是為了吸引那些在電腦端能夠自由選擇游戲購(gòu)買渠道的游戲用戶。據(jù)悉,此前的Xbox系列產(chǎn)品都是只內(nèi)置自家的商城。
    的頭像 發(fā)表于 03-27 15:51 ?451次閱讀

    stm32H743IIT6串口2跟第三方設(shè)備通訊,不插USB就通訊不了怎么解決?

    stm32H743IIT6串口2跟第三方設(shè)備通訊。插上USB就可以通訊,不插USB就通訊不了,有沒(méi)有大神幫忙解決
    發(fā)表于 03-22 06:42

    Meta Quest頭顯將支持多款安卓第三方應(yīng)用并行

    Meta已悄然啟動(dòng)了與此相關(guān)的功能,意味著Quest頭顯可同時(shí)操作多個(gè)第三方Android應(yīng)用。在此之前,Quest對(duì)第三方Android應(yīng)用有嚴(yán)格限制,用戶每次僅能打開(kāi)一個(gè),無(wú)法實(shí)現(xiàn)同屏幕并行多個(gè)第三方應(yīng)用進(jìn)程。
    的頭像 發(fā)表于 03-11 10:58 ?670次閱讀

    蘋果iOS 17.4版允許歐盟地區(qū)用戶使用第三方應(yīng)用商店下載應(yīng)用

    3月6日,蘋果正式推出iOS 17.4版本,首次符合歐州《數(shù)字市場(chǎng)法》規(guī)定,引入“第三方應(yīng)用商店”選項(xiàng),讓iPhone用戶能從非App Store處下載應(yīng)用程序。
    的頭像 發(fā)表于 03-06 10:51 ?797次閱讀

    調(diào)用第三方API接口會(huì)遇到哪些問(wèn)題?如何解決?

    在實(shí)際工作中,我們經(jīng)常需要在項(xiàng)目中調(diào)用第三方API接口,獲取數(shù)據(jù),或者上報(bào)數(shù)據(jù),進(jìn)行數(shù)據(jù)交換和通信。
    的頭像 發(fā)表于 11-30 11:05 ?2147次閱讀
    調(diào)用<b class='flag-5'>第三方</b>API接口會(huì)遇到哪些問(wèn)題?如何解決?

    python第三方庫(kù)有哪些

    Python 作為一門功能強(qiáng)大的編程語(yǔ)言,擁有豐富的第三方庫(kù),幾乎覆蓋了各個(gè)領(lǐng)域的應(yīng)用。下面是一些常見(jiàn)且廣泛應(yīng)用的 Python 第三方庫(kù)的總結(jié),希望能為您提供幫助。 NumPy(Numerical
    的頭像 發(fā)表于 11-29 14:31 ?2070次閱讀