91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

深入解析Tricore的Tasking鏈接文件

汽車ECU開發(fā) ? 來源:汽車ECU開發(fā) ? 2024-11-12 16:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄

1.鏈接文件有什么用?

2.文件結(jié)構(gòu)和語(yǔ)法解析

2.1 文件結(jié)構(gòu)

2.2 語(yǔ)法解析

3.小結(jié)

玩慣了ld文件,突然讓搞lsl文件,被其中花里胡哨的語(yǔ)法搞暈了,例如:


memory cpu0_dlmu
{
   mau = 8;
   size = 64k;
   type = ram;
   map     cached (dest=bus:sri, dest_offset=0x90000000, size=64k);
   map not_cached (dest=bus:sri, dest_offset=0xb0000000, size=64k,priority=8);
}
雖然這個(gè)字面意思寫的很清楚,但是在鏈接器實(shí)際運(yùn)行時(shí)有什么不一樣嗎,mau、priority具體表示什么?因此有必要搞一搞其底層原理。 編譯原理這里就不多談了,咱們直接從鏈接器開始走起。

1.鏈接文件有什么用?

Tasking 鏈接器將Linker和Locator集合到一起, Linker階段主要把 .o文件、lib文件組合成一個(gè)可重定位的對(duì)象文件,例如.out;Locator主要用于給上述.out文件重新分配絕對(duì)地址,并生成目標(biāo)處理器的文件,例如elf、hex、s19等,總體流程如下圖:

fe2b5f7e-905d-11ef-a511-92fbcf53809c.png

在連接過程中,lsl(Linker Script Language)文件起到了非常關(guān)鍵的作用:

確定當(dāng)前目標(biāo)處理的內(nèi)核硬件架構(gòu),例如邏輯地址和物理地址的偏移等;

確定當(dāng)前系統(tǒng)的memory位置,例如RAM、ROM首地址和長(zhǎng)度等;

確定代碼數(shù)據(jù)放到memory的什么位置,這也是我們主要關(guān)心的點(diǎn),控制數(shù)據(jù)代碼到指定位置;

有了上述基本了解,我們來看看lsl的一些關(guān)鍵語(yǔ)法。

2.文件結(jié)構(gòu)和語(yǔ)法解析

2.1 文件結(jié)構(gòu)

lsl鏈接文件主要包含如下幾個(gè)部分:

內(nèi)核架構(gòu)的定義:幫助linker將目標(biāo)內(nèi)核的邏輯地址轉(zhuǎn)換為物理地址,可能還包括中斷向量表、棧的定義等,一般來說編譯器會(huì)把這個(gè)定義好,例如tc1v1_6_2.lsl;

派生的定義:主要是用于描述內(nèi)部總線定義、memeory定義等;

處理器的定義:用于定義單核還是多核,以及對(duì)應(yīng)內(nèi)核實(shí)例

段的定義:控制自定義段的具體位置

框架如下如下:

fe405384-905d-11ef-a511-92fbcf53809c.png

2.2 語(yǔ)法解析

首先來看幾個(gè)最常見到但是沒有關(guān)心過的關(guān)鍵字,以開頭代碼為例:

mau:Minimal Addressable Units,最小可尋址單元,對(duì)Tricore來說就是1 byte,對(duì)應(yīng)數(shù)字 8;

type:指定memory類型,常見的如rom,ram,nvram(任意時(shí)刻都可以修改),blockram

map:該關(guān)鍵字將源地址轉(zhuǎn)為目的地址,具體映射關(guān)系如下:

space => space

space => bus

bus => bus

memory => bus

上述幾個(gè)關(guān)鍵字接下來我們就來分析幾個(gè)常用的語(yǔ)法。 定義memory的基本格式如下:


memory mem_name
{
    type = xx;
    mau = xx;
    size = 64k;
    map map_name ( map_description );
}
以定義TC3xx CPU0 DSPR的空間為例,代碼如下:

memory dsram0 // Data Scratch Pad Ram
 {
   mau = 8;
size=240k;
type=ram;
map(dest=busfpi_bus,dest_offset=0xd0000000,size=240k,priority=8);
map(dest=bus:sri,dest_offset=0x70000000,size=240k);
}
mau = 8,表示最小尋址單位為1 byte;整塊memory為240k,屬于ram類型;比較好玩的是下面兩塊map,我們來看第一個(gè):

map (dest=busfpi_bus, dest_offset=0xd0000000, size=240k, priority=8)
目的地是Tricore 0 的FPI 總線,偏移為0xd0000000,size為240k,優(yōu)先級(jí)為8;我們回過頭看TC3xx的手冊(cè),會(huì)發(fā)現(xiàn)CH、DH這個(gè)Segment是保留的,這就奇怪了,鏈接文件為什么要定義這個(gè)東西?直覺告訴我這個(gè)可能和Tricore尋址方式有關(guān)系。 fpi_bus用于將CPU等連接至中低帶寬外設(shè),對(duì)應(yīng)具體實(shí)例為SPB(系統(tǒng)外設(shè)額總線)、BBB(ADAS domain相關(guān)),位寬32bit;如下圖:

fe66e62a-905d-11ef-a511-92fbcf53809c.png

其次,針對(duì)CHDH的用途在map中也給出體現(xiàn),如下

fe7f2a32-905d-11ef-a511-92fbcf53809c.png

我們繼續(xù)翻看5.3.6.1.1章節(jié),詳細(xì)描述了本地和全局尋址方式。 核內(nèi)DSPR位置始終為0xD0000000,PSPR為0xC000000,可以理解這是本地地址;而在多核系統(tǒng)中,根據(jù)Core ID,PSPR和DSPR分別對(duì)應(yīng)1-7H,這就是所謂的全局地址,如下:

fe9ac008-905d-11ef-a511-92fbcf53809c.png

但是,還有但是,CPU始終是用全局進(jìn)行總線傳輸,意味著即使CPU0從本地DSPR拿數(shù)據(jù),仍然使用是的7000000的地址。 所以緊接著定義了關(guān)于多核globle的map,如下:

map (dest=bus:sri, dest_offset=0x70000000, size=240k);
那么在鏈接的時(shí)候,linker如何知道用0x7開頭還是0xd開頭的呢?根據(jù)后面的priority優(yōu)先級(jí)來定。 在測(cè)試優(yōu)先級(jí)的時(shí)候,上面關(guān)于DSPR的例子舉的不好,因?yàn)椴还芪以趺凑{(diào)優(yōu)先級(jí)都還是用的global地址,除了在調(diào)試時(shí)將某些指定到本地地址,如下: feb59efa-905d-11ef-a511-92fbcf53809c.png 所以換個(gè)DLMU來搞,cpu0_dlmu memory定義如下:

memory cpu0_dlmu
{
    mau = 8;
    size = 64k;
    type = ram;
    map     cached (dest=bus:sri, dest_offset=0x90000000, size=64k);
    map not_cached (dest=bus:sri, dest_offset=0xb0000000, size=64k);
}
我們將變量放到cpu0dlmu0,在不設(shè)置優(yōu)先級(jí)的情況下,編譯結(jié)果如下: fecb5f7e-905d-11ef-a511-92fbcf53809c.png 將not_cached地址優(yōu)先級(jí)提高,結(jié)果如下: fedd0b16-905d-11ef-a511-92fbcf53809c.png 這里我們基本可以得出結(jié)論:數(shù)值越高,優(yōu)先級(jí)越高。 我們將cached ot_cached的代碼互換位置,優(yōu)先級(jí)不變,結(jié)果如下: fef2f976-905d-11ef-a511-92fbcf53809c.png 這就很神奇了,好像不是優(yōu)先級(jí)相同,先到先得,而是默認(rèn)為cached,這是為什么呢? 我們就從這個(gè)變量放置的段來找答案,對(duì)于section的定義,有兩種關(guān)鍵詞: section_setup:定義堆棧、copy、table、啟動(dòng)地址等等

section_setup ::my_space
{
    reserved address range
    stack definition
    heap definition
    copy table definition
    start address
    space reference restrictions
    input section modifications
    section reference restrictions
    MPU data table
}

ff0d9cd6-905d-11ef-a511-92fbcf53809c.png

section_layout:定義一個(gè)或者多個(gè)section,并賦予section一個(gè)地址空間,可以指定運(yùn)行地址、加載地址,section空間大小等等;可以這樣理解,我們寫的代碼、數(shù)據(jù)存放位置是在linker里lsl里的section指定,在車規(guī)中常常會(huì)會(huì)將標(biāo)定數(shù)據(jù)、信息安全數(shù)據(jù)等放置到特定位置,因此掌握這部分內(nèi)容是比較重要的。 實(shí)例如下:

ff311846-905d-11ef-a511-92fbcf53809c.png

仔細(xì)看,在示例中section_layout里還定義group了,它包含了一個(gè)或者多個(gè)input section,因此需要使用語(yǔ)法select 選擇section。 在上一個(gè)試驗(yàn)中,我們把g_DataTest放到了section lmubss_cpu0,如下圖:

ff4e8d18-905d-11ef-a511-92fbcf53809c.png

該section在lsl鏈接文件中定義如下:

ff602172-905d-11ef-a511-92fbcf53809c.png

注意看,此時(shí)run_addr為cpu0_dlmu,對(duì)應(yīng)memory:

ff73aad0-905d-11ef-a511-92fbcf53809c.png

編譯出來是cached地址,那有沒有辦法讓它在non-cached的地址? 根據(jù)lsl說明,使用語(yǔ)法:

group (run_addr = mem:A/map_name)
修改如下:

ff8ba8e2-905d-11ef-a511-92fbcf53809c.png

編譯得到結(jié)果如下: ffa1796a-905d-11ef-a511-92fbcf53809c.png

3.小結(jié)

上面兩節(jié)將lsl的基本框架和常用語(yǔ)法進(jìn)行了梳理,其中比較重要的就是memory定義和section定義,這里最后再總結(jié)下如何將數(shù)據(jù)或者代碼放到指定位置:

首先定義一塊memory,使用語(yǔ)法memory name{ },指定map地址,mau,size;

在section_layout里用group定義運(yùn)行地址,如有必要定義加載地址;

代碼里在待處理的數(shù)據(jù)或者代碼前后添加限定符#pragma,或者_(dá)_attribute__ ((section".name"))

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

    關(guān)注

    8

    文章

    7335

    瀏覽量

    94798
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73999
  • TriCore
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    12094

原文標(biāo)題:基于Tricore的Tasking鏈接文件解讀

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深入解析LMZ14201 SIMPLE SWITCHER? 電源模塊

    深入解析LMZ14201 SIMPLE SWITCHER? 電源模塊 在電子設(shè)計(jì)領(lǐng)域,電源模塊的性能和可靠性至關(guān)重要。今天,我們將深入了解德州儀器(TI)的LMZ14201 SIMPLE
    的頭像 發(fā)表于 03-04 16:25 ?68次閱讀

    深入解析MAX20710:集成式降壓開關(guān)穩(wěn)壓器的卓越之選

    其出色的性能和豐富的功能,為網(wǎng)絡(luò)、數(shù)據(jù)通信和電信設(shè)備等應(yīng)用提供了高效、緊湊的電源解決方案。本文將深入解析MAX20710的特點(diǎn)、工作原理、應(yīng)用設(shè)計(jì)以及關(guān)鍵參數(shù),幫助電子工程師更好地了解和應(yīng)用這款芯片。 文件下載: MAX2071
    的頭像 發(fā)表于 03-04 15:05 ?80次閱讀

    深入解析LMZ35003:高性能電源模塊的設(shè)計(jì)與應(yīng)用

    深入解析LMZ35003:高性能電源模塊的設(shè)計(jì)與應(yīng)用 在電子設(shè)計(jì)領(lǐng)域,電源模塊的性能直接影響著整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。今天,我們將深入探討德州儀器(TI)的LMZ35003電源模塊,它以其出色
    的頭像 發(fā)表于 03-04 13:55 ?86次閱讀

    深入解析TUSS4470:工業(yè)超聲應(yīng)用的集成解決方案

    深入解析TUSS4470:工業(yè)超聲應(yīng)用的集成解決方案 在工業(yè)超聲應(yīng)用的領(lǐng)域中,一款性能卓越的集成芯片往往能起到事半功倍的效果。今天,我們就來深入探討德州儀器(Texas Instruments)推出
    的頭像 發(fā)表于 02-11 17:00 ?544次閱讀

    深入解析bq32000實(shí)時(shí)時(shí)鐘:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    深入解析bq32000實(shí)時(shí)時(shí)鐘:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 在電子設(shè)備的設(shè)計(jì)中,實(shí)時(shí)時(shí)鐘(RTC)是一個(gè)關(guān)鍵組件,它為系統(tǒng)提供精確的時(shí)間和日期信息。TI的bq32000實(shí)時(shí)時(shí)鐘以其豐富的特性和可靠的性能
    的頭像 發(fā)表于 02-09 11:25 ?222次閱讀

    深入解析FSA8049音頻插孔檢測(cè)與配置開關(guān)

    深入解析FSA8049音頻插孔檢測(cè)與配置開關(guān) 在音頻設(shè)備的設(shè)計(jì)中,音頻插孔的檢測(cè)與配置是一個(gè)關(guān)鍵環(huán)節(jié)。今天,我們就來深入了解一下Fairchild(現(xiàn)屬ON Semiconductor
    的頭像 發(fā)表于 01-27 15:50 ?966次閱讀

    深入解析AFE7953:高性能多通道收發(fā)器的技術(shù)剖析與應(yīng)用前景

    和兩個(gè)射頻采樣接收鏈,為雷達(dá)、通信等領(lǐng)域帶來了新的解決方案。本文將對(duì)AFE7953的特性、應(yīng)用、詳細(xì)規(guī)格以及典型特性進(jìn)行深入解析,幫助電子工程師更好地了解和應(yīng)用這款產(chǎn)品。 文件下載: afe7953.pdf 一、AFE7953概
    的頭像 發(fā)表于 01-26 11:15 ?371次閱讀

    普華基礎(chǔ)軟件聯(lián)合英飛凌、TASKING共同發(fā)布AURIX?Drive Core AUTOSAR快速開發(fā)套件

    12月19日,普華基礎(chǔ)軟件聯(lián)合英飛凌、TASKING共同發(fā)布基于TC4x和開源小滿EasyXMen的AURIX Drive Core AUTOSAR[Infineon,iSOFT,TASKING
    的頭像 發(fā)表于 12-28 13:59 ?539次閱讀
    普華基礎(chǔ)軟件聯(lián)合英飛凌、<b class='flag-5'>TASKING</b>共同發(fā)布AURIX?Drive Core AUTOSAR快速開發(fā)套件

    深入解析SLG51003V評(píng)估板:功能、使用與設(shè)計(jì)考量

    深入解析SLG51003V評(píng)估板:功能、使用與設(shè)計(jì)考量 引言 在電子設(shè)計(jì)領(lǐng)域,評(píng)估板是驗(yàn)證和開發(fā)芯片功能的重要工具。今天,我們將聚焦于瑞薩(Renesas)的SLG51003V評(píng)估板
    的頭像 發(fā)表于 12-26 18:00 ?1209次閱讀

    Labview 解析dxf文件并顯示

    上一期開了一個(gè)帖子講Labview導(dǎo)入dxf文件解析和顯示dxf文件,今天繼續(xù)繼續(xù)分享常用圖元的解析與顯示方法。 LINE :用文本方式打開dxf
    發(fā)表于 12-01 11:28

    Labview 解析dxf文件并顯示<一>

    Labview軟件開發(fā)過程中,大家會(huì)遇到導(dǎo)入dxf文件的需要,今天開個(gè)帖子,聊聊如何解析和顯示dxf文件,同時(shí)用圖表來顯示。 首先來介紹下dxf, 簡(jiǎn)單來說他就是圖形文件的一種文本格式
    發(fā)表于 11-14 22:45

    AT組件無法正確解析bin文件怎么解決?

    通過ESP32接受網(wǎng)絡(luò)數(shù)據(jù),然后寫入MCU中,但是發(fā)現(xiàn)在解析bin文件的時(shí)候,會(huì)自動(dòng)添加字符。應(yīng)該是換行符號(hào)的解析出現(xiàn)了問題。有什么好辦法嗎?
    發(fā)表于 09-28 08:36

    普華基礎(chǔ)軟件與TASKING達(dá)成戰(zhàn)略合作

    近日,普華基礎(chǔ)軟件股份有限公司(以下簡(jiǎn)稱“普華基礎(chǔ)軟件”)與塔斯金信息技術(shù)(上海)有限公司(以下簡(jiǎn)稱“TASKING”)正式完成戰(zhàn)略合作協(xié)議簽署,雙方將基于AUTOSAR架構(gòu)標(biāo)準(zhǔn),依托普華基礎(chǔ)軟件
    的頭像 發(fā)表于 07-15 15:28 ?1220次閱讀
    普華基礎(chǔ)軟件與<b class='flag-5'>TASKING</b>達(dá)成戰(zhàn)略合作

    TASKING調(diào)試器全面支持芯馳科技車規(guī)MCU芯片E3650

    近日,TASKING與芯馳科技共同宣布,TASKING BlueBox調(diào)試器工具已全面支持芯馳新一代旗艦智控MCU——E3650,雙方聯(lián)合助力用戶提升產(chǎn)品開發(fā)效率,提供更優(yōu)質(zhì)的產(chǎn)品和服務(wù),加速汽車電子的智能化升級(jí)。
    的頭像 發(fā)表于 04-21 14:10 ?1547次閱讀

    TASKING編譯器全面支持兆易創(chuàng)新GD32A7x車規(guī)級(jí)MCU

    近日,兆易創(chuàng)新 GD32A7x 車規(guī)級(jí) MCU 正式獲得 TASKING VX-toolset for Arm v7.1r1 的全面支持。作為業(yè)內(nèi)領(lǐng)先的嵌入式開發(fā)工具,TASKING
    的頭像 發(fā)表于 04-12 14:31 ?1464次閱讀