會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





XC8 能指定程式記憶體範圍嗎?
新會員
註冊日期:
2012/08/31 17:13
所屬群組:
註冊會員
文章: 12
等級: 2; EXP: 25
HP : 0 / 31
MP : 4 / 563
離線
假設一個寫好功能的副程式占用若干空間

請教 XC8 能將這副程式放置在 PROTECTED 使用者指定的位址範圍嗎?

1月16日 08:46:25
轉換PDF檔 列印


Re: XC8 能指定程式記憶體範圍嗎?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14501
等級: 73; EXP: 6
HP : 1080 / 1801
MP : 4833 / 76185
離線
Protected 的字眼是現在 C18 的 Linker 描述檔裡。而 XC8 對記憶體的描述是放在 ..\microchip\xc8\v1.12\dat\picc.ini 或 picc-18.ini 檔裡。

最簡單的訂定位址的方式是使用絕對定址的方式,使用 @ 0xABCD 的方式。@ 的定址可以用在變數及函數位址的宣告。

如下 po 圖。可以看一下教育訓練教材: XC8T v1.0
在 8-Bits MCU 相關課程 底下
http://www.microchip.com.tw/Data_CD/

附加檔案:



jpg  擷取.JPG (105.68 KB)
16_5a5d55cf92122.jpg 897X640 px

1月16日 09:30:55
轉換PDF檔 列印


Re: XC8 能指定程式記憶體範圍嗎?
新會員
註冊日期:
2012/08/31 17:13
所屬群組:
註冊會員
文章: 12
等級: 2; EXP: 25
HP : 0 / 31
MP : 4 / 563
離線
引用:

Ryang 寫道:
Protected 的字眼是現在 C18 的 Linker 描述檔裡。而 XC8 對記憶體的描述是放在 ..\microchip\xc8\v1.12\dat\picc.ini 或 picc-18.ini 檔裡。

最簡單的訂定位址的方式是使用絕對定址的方式,使用 @ 0xABCD 的方式。@ 的定址可以用在變數及函數位址的宣告。

如下 po 圖。可以看一下教育訓練教材: XC8T v1.0
在 8-Bits MCU 相關課程 底下
http://www.microchip.com.tw/Data_CD/


請教 picc.ini 可修改使用類似 PROTECTED 的功能嗎?

主要是想在自訂義的範圍內只允許自己寫的程式碼

讓 XC8 在編譯時會避開這些被保護的範圍

1月16日 09:47:13
轉換PDF檔 列印


Re: XC8 能指定程式記憶體範圍嗎?
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14501
等級: 73; EXP: 6
HP : 1080 / 1801
MP : 4833 / 76185
離線
剛翻了一下 XC8 Compiler User's Guide。它是有提到可以用:

Use the __section() specifier to have the function positioned into a new section.
Use the -L- driver option to define a memory range and to place the new section into
that range. See Section 5.15.4 “Changing and Linking the Allocated Section” for examples
of all these operations.

的方式去完成。我沒有試過你要的功能。但依書中所寫的做法是可以達到你要的功能:

The following are examples of a variable and function allocated to a non-default
section.
int __section("myData") foobar;
int __section("myCode") helper(int mode) {
/* ... */ }
You must reserve memory, and locate via an explicit linker option, any new psect created
with a __section() specifier. So, for example, if you wanted to place the
sections created in the above example, you could use the following driver options:
-L-PmyData=0200h
-L-AMYCODE=50h-3ffh
-L-PmyCode=MYCODE

1月16日 17:08:14
轉換PDF檔 列印






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

[進階搜尋]


搜尋
Microchip連結

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