国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

表及其在固件層中的位置

劉高 ? 來源:ccly0208 ? 作者:ccly0208 ? 2022-07-28 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通常,需要有一種方法來更改參數(shù)值,而無需重新編譯源代碼。

由于人力短缺,我們最近決定分包一個(gè)簡(jiǎn)單的電子設(shè)計(jì),包括硬件和軟件。我寫了一個(gè)規(guī)范,但事實(shí)證明,我所期望的常識(shí)被設(shè)計(jì)師完全忽略了,因?yàn)樗恢牢蚁胍裁础K究梢詥柕模鞘橇硪换厥铝恕!叭绻粋€(gè)年輕的工程師沒有這方面的知識(shí),也許還有其他人,”我想,此時(shí)我感覺博客要上線了(我應(yīng)該去躺下)。

當(dāng)您編寫一個(gè)軟件時(shí),大多數(shù)時(shí)候您使用常量來確定諸如執(zhí)行循環(huán)的次數(shù)、激活輸出之前等待的時(shí)間等等。在一個(gè)簡(jiǎn)單的 C 程序中,這些常量是使用#define宏以如下形式建立的:

#define WAIT_TIME_BEFORE_ACTIVATING_SOLENOID 4000 //time in mS

可以有這些常量的完整列表。當(dāng)您想修改某些內(nèi)容時(shí),您只需轉(zhuǎn)到宏定義,更改值,然后重新編譯。這一切都很好,但是很多時(shí)候用戶想要改變系統(tǒng)的性能并且沒有知識(shí)或資源來做到這一點(diǎn),更不用說讓你的源代碼進(jìn)入公共領(lǐng)域了。所需要的是一種無需重新編譯源代碼即可更改參數(shù)值的方法。

想想您可以在現(xiàn)代車輛中更改的參數(shù)——您可以對(duì)鎖車后燈保持亮起的時(shí)間進(jìn)行編程您可以啟用/禁用接近傳感器并且——根據(jù)汽車的復(fù)雜程度——你可以改變幾十到幾百個(gè)。現(xiàn)代系統(tǒng)通常將允許使用用戶界面或通過通信通道進(jìn)行某種下載來更改這些參數(shù)。顯然,這些參數(shù)必須駐留在可以重新配置的內(nèi)存中——有時(shí)是 RAM,但主要是配置為像 EEPROM 一樣執(zhí)行的 EEPROM 或閃存。

當(dāng)您在 C 中聲明一個(gè)常量時(shí),如下所示:

const uint16_t iVariable1 = 45;
const uint16_t iVariable2[4]= {45,46,47,48};

大多數(shù)編譯器會(huì)將這些組合在一起,并將結(jié)果數(shù)據(jù)放在閃存中的某個(gè)位置。我不相信有任何保證它們會(huì)相鄰。在沒有專用 EEPROM 的 micros 中,并不是所有的 flash 存儲(chǔ)器都可以當(dāng)作 EEPROM 來處理,所以通常會(huì)有一條指令說服編譯器將一些內(nèi)存空間當(dāng)作 EEPROM 來處理。例如,在使用 Keil 編譯器的 Cypress PSoC4 上,指令如下所示:

const uint8_t EmEEPROM_em_EepromStorage[EmEEPROM_PHYSICAL_SIZE] __ALIGNED(CY_FLASH_SIZEOF_ROW) = {0u};

但是您的處理器和編譯器會(huì)有所不同。

為了確保 EEPROM 中的所有元素都是相鄰的(稍后我將解釋原因),我很想創(chuàng)建一個(gè)數(shù)組(或者可能是一個(gè)結(jié)構(gòu)),就像我在 PSoC4 聲明中所做的那樣:

uint8_t eepromArray[48];

然后通過一個(gè)enum或一組#defines,確定數(shù)組的哪個(gè)元素與特定參數(shù)相關(guān)聯(lián)。

現(xiàn)在,讓我回到我們將微控制器嵌入恐龍跟蹤設(shè)備的時(shí)間。那時(shí),還沒有 EEPROM。后來,EEPROM 以外部設(shè)備的形式提供。然而,客戶仍然希望在不重新編譯的情況下更改參數(shù)。

開發(fā)系統(tǒng)很笨重,獨(dú)立的(通常是便攜式的)PROM 編程器通常是必要設(shè)備的一部分。該技術(shù)是使用上述一些技術(shù)在 EPROM(外部或嵌入在微型計(jì)算機(jī)中)中創(chuàng)建一個(gè)表作為程序的一部分。客戶將能夠使用 EPROM 編程器從主 IC 甚至目標(biāo)設(shè)備讀取二進(jìn)制代碼,轉(zhuǎn)到表位置并修改存在的數(shù)字,然后將整個(gè) shebang 編程回空白 EPROM。然后他/她將 EPROM 插回目標(biāo)套接字——不需要程序匯編-鏈接-加載-編譯。

不同模塊的鏈接和位置是命令行的一部分(可以從批處理文件中輸入),并且有很多關(guān)于如何在不同位置定位內(nèi)存的不同部分的文檔。如果您使用的是外部?jī)?nèi)存或內(nèi)存分區(qū)設(shè)備,則可能會(huì)有很多這樣的分配。不管好壞,這個(gè)功能已經(jīng)被升華了,并且作為現(xiàn)代用戶界面的一部分,細(xì)節(jié)并不容易獲得,盡管從我有時(shí)會(huì)在屏幕上看到閃爍的一閃而過的一瞥中,我認(rèn)為那些命令行可能仍然存在。

在小型系統(tǒng)上,這種舊技術(shù)可能仍然是實(shí)現(xiàn)客戶可配置性的唯一方法。在引發(fā)此博客的項(xiàng)目中,我們的客戶要求重新配置表格,而我們的分包商將“表格”解釋為一堆#defines重新編譯。

使用const聲明很容易;問題在于桌子的位置。可以從編譯報(bào)告中提取內(nèi)存中的確切位置(同樣,每個(gè)處理器/編譯器可能不同),但該位置可能因每次編譯迭代而異。使用固定位置的想法有很多值得推薦的地方。我對(duì)如何使用 PSoC 微控制器解決這個(gè)問題有一個(gè)相當(dāng)好的想法,但上述項(xiàng)目中的處理器是 Microchip Atmega328,這意味著我有一個(gè)大問題——我根本不知道。

有一些關(guān)于在 Atmega 上實(shí)現(xiàn)此功能的在線討論。該設(shè)備實(shí)際上具有 EEPROM,因此將表格放在那里可能同樣容易,但這僅在開發(fā)工具允許您更改 EEPROM 值甚至程序存儲(chǔ)器時(shí)才有用。時(shí)間會(huì)證明一切。

兩個(gè)分開的想法:一些關(guān)鍵任務(wù)設(shè)備具有檢查內(nèi)存校驗(yàn)和以確保程序內(nèi)存正常的例程。在這種情況下,校驗(yàn)和計(jì)算應(yīng)排除任何要調(diào)整的表。

調(diào)整影響軟件性能的參數(shù)實(shí)際上可能會(huì)突出或掩蓋程序中的缺陷。但不能保證僅僅因?yàn)槟梢愿男阅埽能浖蜎]有錯(cuò)誤。我曾經(jīng)有一個(gè)上司受此錯(cuò)覺困擾——我在那份工作上只干了三個(gè)月。

后記


在重新設(shè)計(jì)之后,我們的分包商選擇將表格放置在 EEPROM 中。看來 Atmel Studio 7 確實(shí)允許您訪問 EEPROM,但它不會(huì)將內(nèi)容顯示為屏幕上的表格。分包商采用的流程是使用 Atmel Studio 7(在 PC 上運(yùn)行)將 EEPROM 內(nèi)容讀入 hex 文件,編輯 hex 文件的內(nèi)容,為已更改的每一行創(chuàng)建一個(gè)新的校驗(yàn)和,重新保存文件,然后將文件寫回 EEPROM。您還必須來回更改一些微型的內(nèi)部“開關(guān)”以訪問 EEPROM,然后返回標(biāo)準(zhǔn)操作。這似乎有點(diǎn)令人費(fèi)解——我確實(shí)希望找到一種更優(yōu)雅的方式。

后記


我剛剛嘗試了 PSoC Programmer,看看是否可以直接從用戶界面 (UI) 修改一個(gè)字節(jié)。雖然不需要切換微控制器的編程設(shè)置,但不幸的是,它仍然需要與上述相同的技術(shù)來編輯 hex 文件。

由于缺乏一個(gè)像樣的程序員界面,也許這個(gè)整個(gè)表格的概念在未來不會(huì)起作用。或者也許我們應(yīng)該投資一個(gè)具有合適用戶界面的第三方程序員(如果這樣的野獸仍然存在的話)。

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51592
  • C程序
    +關(guān)注

    關(guān)注

    4

    文章

    255

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    倍加福電感式距離傳感器開關(guān)閥位置反饋的應(yīng)用

    在過程工業(yè)的復(fù)雜體系里,閥門開關(guān)宛如“流量指揮官”,掌控著液體與氣體物質(zhì)的流動(dòng)走向。當(dāng)這些閥門為開關(guān)閥時(shí),開啟和關(guān)閉過程,它們會(huì)被移動(dòng)到既定的終點(diǎn)位置
    的頭像 發(fā)表于 02-10 13:34 ?283次閱讀

    固件版本錯(cuò)配:一個(gè)讓老工程師都栽過跟頭的“低級(jí)錯(cuò)誤”

    的硬件版本號(hào)是否一致,并簽字確認(rèn)。自動(dòng)校驗(yàn):通過燒錄腳本或中間件軟件,燒錄啟動(dòng)前自動(dòng)計(jì)算所選固件文件的MD5或SHA256校驗(yàn)值,與“版本對(duì)應(yīng)預(yù)存的基準(zhǔn)值進(jìn)行比對(duì)。校驗(yàn)失敗則立
    發(fā)表于 12-18 10:31

    Bootloader固件升級(jí)的步驟

    ,也可以不更新,項(xiàng)目中,我們通常會(huì)對(duì) FW 版本號(hào)進(jìn)行對(duì)比,會(huì)將 MCU 的 App 程序更新最新的版本,起到固件升級(jí)的效果。更新的話,BootLoader 更新完程序后,跳轉(zhuǎn)到新程序運(yùn)行;不更新
    發(fā)表于 11-19 07:41

    AMIAptio V UEFI固件成功部署后量子密碼學(xué)

    AMI實(shí)現(xiàn)行業(yè)首創(chuàng):Aptio V UEFI固件成功部署后量子密碼學(xué) 亞特蘭大2025年11月13日 /美通社/ -- 動(dòng)態(tài)固件領(lǐng)域的全球領(lǐng)導(dǎo)者AMI?欣然宣布,其旗艦產(chǎn)品Apti
    的頭像 發(fā)表于 11-13 21:08 ?309次閱讀

    AES加解密算法邏輯實(shí)現(xiàn)及其蜂鳥E203SoC上的應(yīng)用介紹

    ,算法的循環(huán)輪數(shù)就要增加2輪。 AES密碼算法的內(nèi)部結(jié)構(gòu)由多個(gè)構(gòu)成,每一都是對(duì)整個(gè)處理塊16字節(jié)進(jìn)行操作,并且循環(huán)多輪進(jìn)行處理。加密運(yùn)算,每一輪運(yùn)算包含四種不同類型的
    發(fā)表于 10-29 07:29

    激光焊接技術(shù)焊接緊固件工藝的應(yīng)用

    激光焊接技術(shù)作為現(xiàn)代制造業(yè)的重要工藝方法,已在多個(gè)工業(yè)領(lǐng)域展現(xiàn)出顯著的技術(shù)優(yōu)勢(shì)。固件焊接應(yīng)用,激光焊接憑借其高能量密度、精確可控及高效靈活的特點(diǎn),逐漸替代了部分傳統(tǒng)焊接方式,成
    的頭像 發(fā)表于 09-15 16:58 ?761次閱讀
    激光焊接技術(shù)<b class='flag-5'>在</b>焊接緊<b class='flag-5'>固件</b>工藝<b class='flag-5'>中</b>的應(yīng)用

    業(yè)內(nèi)分享熱敏電阻智能電能中常用的型號(hào)及相關(guān)特性

    電能不同環(huán)境溫度下的正常運(yùn)行,提高電能的穩(wěn)定性和可靠性。 不同型號(hào)的PTC和NTC熱敏電阻,其阻值范圍、工作溫度范圍等參數(shù)不同,決定了它們電能
    發(fā)表于 09-10 10:50

    如何保障遠(yuǎn)程運(yùn)維過程的數(shù)據(jù)安全和隱私?

    LZ-DZ100背面 分布式光伏集群的遠(yuǎn)程運(yùn)維,數(shù)據(jù)安全和隱私保護(hù)面臨多重風(fēng)險(xiǎn),包括 傳輸過程的竊聽 / 篡改、未授權(quán)訪問控制指令、設(shè)備固件被惡意植入、敏感數(shù)據(jù)(如站點(diǎn)
    的頭像 發(fā)表于 08-22 10:26 ?988次閱讀
    如何保障遠(yuǎn)程運(yùn)維過程<b class='flag-5'>中</b>的數(shù)據(jù)安全和隱私?

    IDE運(yùn)行固件內(nèi)自帶的AI程序,約2分鐘左右就死機(jī)了,為什么?

    1、IDE運(yùn)行固件內(nèi)自帶的AI程序,約2分鐘左右就死機(jī),點(diǎn)擊停止報(bào) 繁忙,點(diǎn)連接也報(bào) 忙碌。從資源管理器中點(diǎn)擊CanMV可以訪問下一級(jí)文件夾。 2、過幾分鐘后
    發(fā)表于 06-06 07:28

    氧化制備芯片制造的重要作用

    本文簡(jiǎn)單介紹了氧化制備芯片制造的重要作用。
    的頭像 發(fā)表于 05-27 09:58 ?1553次閱讀
    氧化<b class='flag-5'>層</b>制備<b class='flag-5'>在</b>芯片制造<b class='flag-5'>中</b>的重要作用

    SLIP協(xié)議及其直流電能的應(yīng)用

    SLIP協(xié)議憑借其簡(jiǎn)潔性,直流電能等嵌入式設(shè)備仍占一席之地。
    的頭像 發(fā)表于 05-20 14:34 ?702次閱讀
    SLIP協(xié)議<b class='flag-5'>及其</b><b class='flag-5'>在</b>直流電能<b class='flag-5'>表</b><b class='flag-5'>中</b>的應(yīng)用

    fx3 sdk的usb control centerwin10以上系統(tǒng)燒寫固件失敗怎么解決?

    fx3 sdk1.3的usb control centerwin10和以上系統(tǒng)燒寫固件失敗,狀態(tài)欄提示failed,win7系統(tǒng)
    發(fā)表于 05-08 06:00

    為什么無法USB控制中心選擇固件映像文件?

    開發(fā) CYUSB3KIT-003 固件并將固件映像文件下載到 FX3 時(shí)遇到了一個(gè)問題。 我通過將 PMODE[2:0] 配置為 F11 來設(shè)置 USB 啟動(dòng)模式,并像往常一樣將新開發(fā)的
    發(fā)表于 05-07 06:14

    芯片制造的阻擋沉積技術(shù)介紹

    本文介紹了芯片銅互連工藝需要阻擋的原因以及關(guān)鍵工藝流程。
    的頭像 發(fā)表于 05-03 12:56 ?3362次閱讀
    芯片制造<b class='flag-5'>中</b>的阻擋<b class='flag-5'>層</b>沉積技術(shù)介紹

    磁旋轉(zhuǎn)編碼器永磁同步電機(jī)位置測(cè)量的應(yīng)用(可下載)

    一、概述與直流電機(jī)相比,永磁同步電機(jī)具有體積小、 效率高、無需維護(hù)等優(yōu)點(diǎn),某些應(yīng)用 場(chǎng)景,由位置傳感器精度引起的轉(zhuǎn)矩波動(dòng)應(yīng)限制 1%以內(nèi),這就要求電機(jī)
    發(fā)表于 04-09 13:37 ?0次下載