新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > IAR編譯器的常見問題

        IAR編譯器的常見問題

        作者: 時間:2016-11-30 來源:網絡 收藏

        先編譯看看自己的程序用了多少ram,在看看總共有多少ram。

        然后Project ——> Option ——> Linker ——> List選擇生成LIST文件,并包含stack選項,如下圖所示。

        在./Debug/list目錄下,得到.map(可能是.lst等其他格式)文件,用記事本打開,找到以下內容:

        ****************************************
        * *
        *CALL GRAPH*
        * *
        ****************************************

        ->Sub-tree of type: Interrupt function tree that does not make
        : indirect calls
        CSTACK
        | Stack used (prev) : 00000000
        01 int_T0_OV
        | Stack used (prev) : 00000000
        | + function block : 0000000C

        ......(省略N行)

        01 main
        | Stack used (prev) : 0000003A
        | + functionblock: 00000000
        <-Sub-tree of type: Function tree
        | Stack used : 000000E2

        找到最大的Stack used,我的就是000000E2,這就是用到的最大的堆??臻g,保守一點,我設置成0x100字節,沒有超過剩余RAM,再重新編譯,運行,仿真器沒有堆棧不足警告,程序也能正常運行了。

        如下圖所示:

        4. 查看匯編

        相信一個優秀的單片機軟件工程師都多多少少會去看看編譯器的匯編代碼,看看有沒有什么問題或者看看編譯器有沒有自作聰明的做些什么

        Project ——> Option ——> C/C++ complier ——> List,勾選output assembler files,編譯后則生成離線匯編代碼文件

        此時在工程目錄下的Debug-->List即可看到所有參加編譯的C文件對應的匯編文件,后綴名為*.s90



        關鍵詞: IAR編譯

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 呼图壁县| 上高县| 启东市| 新宾| 聊城市| 行唐县| 雅江县| 泗阳县| 同心县| 斗六市| 黑山县| 寿光市| 海南省| 阳西县| 稻城县| 汨罗市| 日照市| 保德县| 隆德县| 惠州市| 汾阳市| 吴忠市| 宁德市| 清河县| 海南省| 林甸县| 彭州市| 兰坪| 贵港市| 岢岚县| 莱西市| 肃宁县| 永春县| 水城县| 新宾| 皮山县| 玉田县| 襄汾县| 阿尔山市| 霞浦县| 淮北市|