SAME54 Bootloader範例請教
|
||||
---|---|---|---|---|
資深會員
|
最近看到Harmony v3的更新中加了些範例,其中Bootloadrer新增了ethernet、I2C、SD Card
從Bootloader Library Help的Introduction中可看到更新檔有Binary File與Normalized Hex File兩種 關於Binary File的部份,我參考SD Card範例,看到流程大致上是從檔案中每次讀取512Bytes(1個Page),然後呼叫NVMCTRL_PageWrite來寫入整個Page 請問有Binary File的相關說明嗎?包含:(因MPLAB X compile出來預設只有hex檔) .如何產生Binary File? .是否有bin檔(Binary File)格式的說明?
發表於: 2021/5/3 14:08
|
|||
|
Re: SAME54 WDT範例 - Clock顯示問題(Harmony)
|
||||
---|---|---|---|---|
資深會員
|
最近又有空再試了一次,
MPLAB X 5.45 XC32 2.50 進Harmony 3 Content Manager把所有東西都按了下載之後再進去看 開harmony的Clock Configuraton,WDT的值是32768,旁邊的OSCULP1K是1024 似乎和上一次看到的圖一樣,沒有什麼改變 請問怎麼確認 CSP 版本? 你們那裡開起來已經修正了嗎? ----------------------------- 另外遇到一個問題是MHC開起來的時候會出錯,錯誤訊息: Unable to launch Harmony tool suite for this configuration 問題及解法參考 簡單說就是自己到GitHub上下載MHC項目,然後手動覆蓋至Harmony的下載目錄中 這個問題與解法跟大家分享一下 這表示Local端的內容與GitHub上的版本並沒有確實同步,我現在開MHC時會出現有新版本要我下載,但用MPLAB X看plugin卻沒有新版本(仍顯示Version: 3.6.4),Check for update無內容,但GitHub的Release Note已到v3.7.1 隨便提一下, 上次發的圖這麼快就失效了嗎,你們的新網頁除了舊資料消失,新資料也會消失,Google搜尋問題很多都出現無效的連結,找學生來打工做網頁應該都不至於弄成這樣吧...
發表於: 2021/5/3 12:41
|
|||
|
XC8 - 請問C99模式下怎麼做數值轉字串?
|
||||
---|---|---|---|---|
資深會員
|
最近用MPLAB X, MCC, XC8開始做新的project,
剛測試時發現裡面沒有itoa、ultoa之類的函數,查了一下好像是因為C99下不能用? (目前的XC8中stdlib.h中沒有相關的header) 但XC8裝完預設就是用C99,相關的字串、數字轉換應該要在哪找? 另外教學區的XC8T v1.0中,「XC8 函數庫」(p.132 - p.133)中有提到一個Link in C Library的選項,但現在已經沒有了 這個教學用的版本是1.2.1,現在都已經是2.3了,也過期的太久,版大該更新一下了吧?
發表於: 2020/12/21 12:47
|
|||
|
請問XC8的區域變數可以開到多大?
|
||||
---|---|---|---|---|
資深會員
|
發表於: 2020/12/17 11:28
|
|||
|
Re: 請問PIC18F由MCC所產生的SPI.h中的SPI1_DEFAULT在哪定義?
|
||||
---|---|---|---|---|
資深會員
|
是說SPI1_DEFAULT的位置?
在mcc_generated_files目錄裡的spi1.h / spi2.h裡吧 /* SPI interfaces */ typedef enum { SPI1_DEFAULT } spi1_modes_t; 使用時就: SPI1_Open(SPI1_DEFAULT);
發表於: 2020/12/17 11:20
|
|||
|
Re: 使用MCC產生的callback問題
|
||||
---|---|---|---|---|
資深會員
|
感謝版大還去找了範例來發給我...
不過callback的操作是沒什麼問題啦,我主要的問題是, 在callback裡的操作,限制至少是和在ISR內操作是一樣的 即不應轉跳,不應執行秏時的工作 以前的建議甚至是,進中斷後,做完必要的接收、狀態設定後就儘快離開,以免影響中斷的觸發 但在MCC裡一點這種提示都沒有,MCC中幾乎所有的範例都直接在callback裡執行動作,但做的都是些簡單的點LED功能(版大給的範例看起來也是改個IO狀態就離開了) ,如果這樣,那也不值得用callback做兩次轉跳,只為了不修改到MCC產生的code 以uart為例,要是在接收的callback中,直接把parser加在後面, 或是在Timer中,把一些定時執行的routine放進去,可能就會因秏時過長而影響中斷? XC8是會把isr的callback轉成inline嗎,不然怎麼敢做這麼多jump...?
發表於: 2020/12/9 16:05
|
|||
|
使用MCC產生的callback問題
|
||||
---|---|---|---|---|
資深會員
|
以Timer為例,它提供了一個callback:
TMR1_SetInterruptHandler(TMR1_1sInterruptHandler); 讓我們可以從 interrupt_manager.c --> tmr1.c --> 自己的.c 主要的好處應該是可以不用修改interrupt_manager.c及tmr1.c就取得中斷 在範例裡面也都直接在callback裡執行流程(但都是些點LED的動作) 但callback function(本例為TMR1_1sInterruptHandler)實際上還是在ISR中,並沒有轉移控制權,只是call了函式跳出來 以前在寫的時候,一直要注意,不要在ISR裡面jump,也不要在裡面做秏時長的工作,但MCC的範例裡完全沒有這種警告,感覺好像你想在callback裡做什麼都行 我今天是看到一個Warning: non-reentrant function "_XXX_Read" appears in multiple call graphs and has been duplicated by the compiler 即function在ISR即main中都被被執行,才想到我在Timer的callback裡呼叫了函式 你們對callback內進行的操作有什麼額外的說明嗎? 在MCC裡註冊callback,實際上會跳兩次,先到tmr1.c,再到我們的c檔案,這種方式在XC8裡有什麼特殊處理讓它執行不會出問題嗎? 還有MCC產生的code自己就產生了一堆Warning,什麼xxx is never called我就不說了,其它 比如tmr1.c
void TMR1_WriteTimer(uint16_t timerVal)
Warning:
mcc_generated_files/tmr1.c:129:17: warning: implicit conversion loses integer precision: 'uint16_t' (aka 'unsigned short') to 'unsigned char' [-Wconversion]
spi1.c中:
void SPI1_ExchangeBlock(void *block, size_t blockSize)
Warning:
mcc_generated_files/spi1.c:108:: warning: (1498) pointer (SPI1_ExchangeBlock@data) in expression may have no targets
自己工具產生的code應該稍微用點心,把這種訊息給處理了吧,
發表於: 2020/12/8 17:13
|
|||
|
SAME54 RTC範例問題
|
||||
---|---|---|---|---|
資深會員
|
我想測試RTC的日曆功能,使用範例:
HarmonyV3\csp\apps\rtc\rtc_alarm\firmware\sam_e54_xpro.X 有幾個問題: 1. sys_time.tm_wday應該不是必須的,設定它的原因是? 2. sys_time.tm_year在範例說明裡寫since 1900,但RTC_RTCCTimeSet裡面是
((TM_STRUCT_REFERENCE_YEAR + initialTime->tm_year) - REFERENCE_YEAR)
2.1 請說明一下這個計算方式(閏年與1900參考值的關係),為什麼要設定leap year?,Spec中也沒有看到與1900有相關(見附圖spec部份紅框) 2.2 RTC_RTCCTimeSet及讀取應該要隱藏這種莫名奇妙的計算,讓使用者直接輸入想要的年份,struct tm裡的每一個欄位都是int,也沒有什麼大小不夠用的問題。內部想用UNIX time沒問題,但應該讓使用者選擇自己想要的輸入方式。想要2018年,就輸入2018,還要自己手算的話弄成API幹嘛? 3. 因為我想用RTC當日曆,請問可以用它來做UTC與Local time的轉換嗎?即裡面跑UTC時間,要取出用時,可轉換為想要的local time。這種基本的功能我覺得應該要包在API裡面... 4. 可以說明一下Tamper的作用嗎?我看說明覺得它好像是接受外部異常觸發,然後儲存異常時間點(或一些額外資訊?)用的,我這樣理解對嗎? 5. 隨便抱怨一下,這個範例竟然在while(1)裡面直接print取出的時間,我一啟動之後,terminal程式就爆了,寫出這種範例的人是和開發者有仇嗎?
//15-01-2018 12:00:00 Monday
Attach file: (0.00 KB) (0.00 KB) (0.00 KB) (0.00 KB)
發表於: 2020/7/7 16:20
|
|||
|
SAME54 WDT範例 - Clock顯示問題(Harmony)
|
||||
---|---|---|---|---|
資深會員
|
我這邊在測試SAM E54 XPLAINED PRO的範例時,開harmony的Clock Configuraton,發現WDT的值是32768,但旁邊的OSCULP1K是1024(參考附圖紅框)
程式註解寫4秒後重開,看Config欄位的設定值應該是1024沒錯 看起來是Clock的圖畫錯了? 範例: HarmonyV3\csp\apps\wdt\wdt_timeout\firmware MPLAB X 5.40 Harmony Configurator 3: Version: 3.5.0 XC32 2.41 Attach file: (0.00 KB) (0.00 KB) (0.00 KB)
發表於: 2020/7/3 12:11
|
|||
|