會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





使用XC8, MCC練習Bootloader相關問題
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 95
等級: 8; EXP: 73
HP : 0 / 193
MP : 31 / 5334
離線
各位先進,

小弟使用MPLAB X 4.0, XC8 1.43,想練習一下用MCC產生Bootloader


參考說明為:Bootloader Generator User’s Guide

在處理Bootloader專案時遇到點問題,
在說明中,要我們在Bootloader專案裡建2個Configuration:
- No_Configuration
- With_Configuration
看起來是說在合併時,不採用Bootloader的Config,直接套AP的

其中No_Configuration:在mcc.c中新增#ifdef如下:


#ifdef OMIT_CONFIGURATIONS

#else

// Configuration bits: selected in the GUI

// CONFIG1L
#pragma config RETEN = ON    // VREG Sleep Enable bit->Enabled
#pragma config INTOSCSEL = HIGH    // LF-INTOSC Low-power Enable bit->LF-INTOSC in High-power mode during Sleep
#pragma config SOSCSEL = DIG    // SOSC Power Selection and mode Configuration bits->Digital (SCLKI) mode
#pragma config XINST = OFF    // Extended Instruction Set->Disabled

...

#endif

#include "mcc.h"

void SYSTEM_Initialize(void)
{
...
}



但這樣Compile時會產生:
The program file could not be loaded: The Extended CPU Mode configuration bit is enabled, but the program was not built using extended CPU instructions.


以前在MPLAB時,在build option中有「MPASM/C17/C18」可以勾Extended Mode,但在MPLAB X, XC8下我找不到這個選項...

還有想請教一下觀念問題,Bootloader與AP是否可以使用不同的Config?即是否可以不要取消Bootloader的Config?
(若兩者因應用不同使Config不同時?如一個開Watchdog一個關閉?使用不同OSC?)

因為以前用C18合併時,好像也沒有在管bootloader與AP的Config值有沒########################OOPS########################蘇薴岔的

- #pragma定義的Config應該是存在暫存器裡,在燒錄時就固定的吧...


以前有現成的boot檔,只要合併就行(我用hexmate),要自己生的時候就一大堆問D@@

這個好像也都搜尋不到範例專案檔…,沒看到什麼完整的說明,版大有沒有什麼可以用的資源啊~~~

8月25日 12:47:16

b9015038 於 2017年08月25日 13:36:05
轉換PDF檔 列印


Re: 使用XC8, MCC練習Bootloader相關問題
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 95
等級: 8; EXP: 73
HP : 0 / 193
MP : 31 / 5334
離線
試了半天還是不少問題…

MPLAB X 4.00
XC8 1.43
MCC 3.36

應該都是目前最新的

上面提到的The program file could not be loaded: The Extended CPU Mode configuration bit is enabled, but the program was not built using extended CPU instructions

查了查說明,在這裡看到,XC8不支援Extended,但,要是不明確指定關閉,compile時會被打開,造成衝突

在Bootloader的說明檔裡也沒提到這個,MCC裡也還是提供這個選項(#pragma config XINST = ON/OFF)
這樣是要來整人的嗎...,明知不支援,為何不直接強制關閉?

在Bootloader的mcc.c中,OMIT_CONFIGURATIONS 區塊中,自己加上#pragma config XINST = OFF,Debug and run總算正常了

好高興想試一下,按下release,結果出現

(944) data conflict at address 300000h between dist/Combined/production/TBox.X.production.hex and ../../TBoxBoot/TBoxBoot.X/dist/No_Configuration/production/TBoxBoot.X.production.hex
make
[2]: *** [dist/Combined/production/TBox.X.production.hex] Error 1
make
[1]: *** [.build-conf] Error 2
make
: *** [.build-impl] Error 2

BUILD FAILED
(exit value 2, total time: 1s)



data conflict at address 300000h是啥???,PIC18F67K22在DashBoard上的Program Memory顯示是1F000

這個我搜尋了半天,好像和IVT重複有關,但解法好像都要手動改linker script,這算是linker衝突的bug?

再提一下原本MPLAB中,export program memory,指定匯出的程式區間的功能也不知道怎麼用了(在做bootloader時這個功能就會用到)

算了我想想自己用Hexmate應該也行,這問題先放一邊,MPLAB X先關起來,再一開,我建的兩個AP與Bootloader Project的MCC內容都不見了...,不死心重開了幾次,還是喚不回設定值...


在「Window」中選Program Memory,以前在MPLAB中,只要compile完就會出現內容,現在要是沒執行燒錄,就一片空白完全沒東西 (這個在重開機後正常了,似乎不定時出現)

Bootloader的Host APP好像也沒有提供source code...,參考這裡


測試了半天,搞得頭昏眼花,感覺和以前測試Harmony時一樣,官方一直推工具,說是新一代趨勢,結果給的是這種每次更新你都不知道會出現什麼新驚喜的東西,這些工具也都發展好些年了,表現還是這樣實在讓人相當失望

當然在設定上MCC真的方便很多(如果工作正常的話),如果是學生做點作業不太怕出錯,那就用了,但要用它來做產品的話,會讓人覺得不太安穩吧

8月28日 18:08:21
轉換PDF檔 列印


Re: 使用XC8, MCC練習Bootloader相關問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14101
等級: 72; EXP: 43
HP : 1071 / 1785
MP : 4700 / 69891
離線
"MCC裡也還是提供這個選項(#pragma config XINST = ON/OFF)"

Ans: 如果你有用正式版的 XC8 這項功能可以打開,這時會用 PIC18 的 Extended Instruction Set 來編譯速度上可以快約 30%。如果是用 Lite (精簡版) 則這項功能技必須關閉。

Configuration Bits 只能存在一個,一般是與 Bootloader 的成是在一起。User AP 不要有 Config. 的設定避免重複。AP 只做 Address 位移的設定。

8月29日 13:59:47
轉換PDF檔 列印


Re: 使用XC8, MCC練習Bootloader相關問題
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 95
等級: 8; EXP: 73
HP : 0 / 193
MP : 31 / 5334
離線
從我查到的資料

http://microchipdeveloper.com/faq:14
(Does the XC8 compiler support the extended instruction set?
No, the MPLAB® XC8 Compiler does not support the extended instruction set. It generates smaller code using the non-extended instruction set than it would using the extended instructions.)


http://www.xargs.com/pic/c-faq.html#xinst
(If you are using the free/lite/academic version of C18, it also does not support the extended instruction set, and it should be disabled as shown above. Only the paid version of C18 supports the extended instruction set. When the extended instruction set is enabled, it is also necessary to provide the --extended command-line option (or the equivalent in the IDE) to enable the generation of the appropriate code.)

看起來,是都寫XC8不支援Extended mode,您提到的應該是C18時的情況?

8月29日 14:22:29
轉換PDF檔 列印


Re: 使用XC8, MCC練習Bootloader相關問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14101
等級: 72; EXP: 43
HP : 1071 / 1785
MP : 4700 / 69891
離線
XC8 也有此模式,在 MCC 裡要用 Register 的方式去做此設定。

CONFIG4L
LVP OFF, STVREN ON, XINTST OFF
如使用 Lite 版的 XC8 要將 XINTST 設成 OFF

附加檔案:



jpg  擷取.JPG (143.97 KB)
16_59a633cdaf0ea.jpg 1025X770 px

8月30日 11:41:01
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project