關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > TMS320F2812三種運行方式在SRM控制中的應用

        TMS320F2812三種運行方式在SRM控制中的應用

        作者: 時間:2012-05-09 來源:網絡 收藏

        b.jpg
        段生成完畢,還需要在CMD文件中將其映射到RAMH0上,即所謂的H0啟動模式。之后程序就會照流程直接在RAMH0上程序,實現RAM調試
        c.jpg
        1.2 Flash直接
        Flash直接運行指的是將用戶編寫的代碼燒寫到Flash,并在Flash初始化完成后,用戶代碼運行于Flash上的一種運行
        與RAM調試運行相比,Flash直接運行的程序流程多了一個Memory_copy的環節,即code_start-> wd_disable-> c_int00-> main()-> Memory_copy。這是因為要想在Flash上直接運行程序,就需要配置好Flash寄存器(FACTIVEWAIT、FBANKWAIT等)。但這些寄存器是不能在Flash上直接配置的,所以只能將包含這些配置語句的Flash初始化函數InitFlash()搬運到RAM中運行。
        InitFlash()的搬運是通過指令“#pragma CODE_SECTION(InitFlash,“ramfunes”)”和CMD文件配置實現的。前者將函數InitFlash()映射到段ramfuncs,后者在SECTIONS中作如下配置:
        ramfuncs:LOAD=FLASH,PAGE=0
        RUN=RAML0,PAGE=0
        LOAD_START(_RamfuncsLoadStart),
        LOAD_END(_RamfuncsLoadEnd),
        RUN_START(_RamfuncsRunStart)
        其中,RamfuncsLoadStart等為已定義好的3個外部全局變量。這樣配置后,只需要在主程序main()中先調用MemCopy(Ram-funcsLoad Start,&Ramfuncs LoadEnd,&Ram funcsRunStart)將已經燒寫到Flash中的初始化函數InitFlash()代碼全部復制到以Ram-funcsRun
        Start開頭的RAM中,再調用函數InitFlash()就實現了InitFlash()的搬運。
        最后需要注意的一點就是,給codestart段分配的BEGIN段需要映射到以0x3F7FF6開頭的一段Flash上,用于Flash啟動模式,而不再是在RAM上。如此配置之后,其他用戶代碼就可以在Flash上正常運行了。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永州市| 比如县| 龙川县| 长海县| 鱼台县| 平顶山市| 五台县| 高青县| 山西省| 城固县| 玛多县| 巨野县| 金沙县| 通江县| 永宁县| 九台市| 苏州市| 新巴尔虎右旗| 南安市| 扬州市| 岳西县| 保定市| 彰化市| 波密县| 班戈县| 新昌县| 巴青县| 宣汉县| 满洲里市| 阿合奇县| 沁阳市| 马尔康县| 肥东县| 连州市| 柳林县| 上高县| 墨竹工卡县| 额尔古纳市| 福州市| 高要市| 洛阳市|