新聞中心

        STM8 RAM

        作者: 時間:2016-11-11 來源:網絡 收藏
        我關于實現IAP的理解,如果有誤,希望可以得到大家的斧正

        1.IAP部分程序和應用程序分開兩個項目編寫。
        2.應用程序部分編譯前要修改ICF文件,使其代碼安排到IAP程序區外,如0x9000
        3.IAP項目編譯前也要修改ICF文件
        a.修改代碼編譯后所在ROM中的位置,如:0x8000-0x8FFF
        b.按網友dianzidog 給出的方法,實現ram運行代碼
        ////////////////////////摘自網友dianzidog的帖子 ///////////////////////////////////
        icf文件里面
        initialize by copy { ro section MyCodeInRAM };//這句是將代碼在程序初始化的時候copy到

        本文引用地址:http://www.104case.com/article/201611/316712.htm

        RAM的。
        place in NearData { ro section MyCodeInRAM };//定義段的位置

        c文件里面
        void abc(void)@"MyCodeInRAM"http://直接將函數限定在段中
        {
        ......
        ......
        ......
        }

        就完成iar中ram運行代碼的步驟了

        //////////////////////////////////////////////////////////////////////////////////////////

        ////
        4.IAP程序經過IAR編譯后的HEX文件,使用ST-LINK將代碼燒入CPU內
        5.應用程序則通過IAP的上位機應用程序通過串口(假設使用UART1協議)下載到已經有IAP程序的CPU

        中去。

        6.IAP程序項目所需修改后的ICF文件(暫時以STM8S103K為修改對象,摘取與原文件不同部分):

        define region NearFuncCode = [from 0x8000 to 0x87FF];//假設BOOTLOADER部分使用了2K的代碼空


        define region FarFuncCode = [from 0x8000 to 0x87FF];
        define region HugeFuncCode = [from 0x8000 to 0x87FF];

        initialize by copy { ro section MyCodeInRAM };//這句是將代碼在程序初始化的時候copy到RAM的

        。
        place in NearData { ro section MyCodeInRAM };//定義段的位置

        7.應用程序項目所需修改后的ICF文件(暫時以STM8S103K為修改對象,摘取與原文件不同部分):

        define region NearFuncCode = [from 0x8800 to 0x9FFF];
        define region FarFuncCode = [from 0x8800 to 0x9FFF];
        define region HugeFuncCode = [from 0x8800 to 0x9FFF];



        關鍵詞: STM8RA

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 南部县| 宣恩县| 岐山县| 淮滨县| 微山县| 西贡区| 东平县| 南岸区| 墨玉县| 五常市| 象山县| 渝北区| 鱼台县| 茂名市| 西峡县| 肥西县| 尚志市| 河北区| 弥渡县| 武城县| 临西县| 澄城县| 汝南县| 饶阳县| 高碑店市| 渭源县| 炉霍县| 福清市| 白水县| 泰宁县| 资中县| 盐山县| 曲阜市| 九龙坡区| 勃利县| 信阳市| 钦州市| 雅江县| 丹寨县| 岐山县| 马关县|