jangyouhua 发表于 2008-7-16 15:32:45

AVRX在IAR上的移植!

AVRX操作系统在IAR AVR上成功移植!只要方法正确可改到任何IAR AVR版本上,步骤如下:
1.生成AVRX库文件:AVRX.LIB(实际是AVRX.R90改名方便见名知义)^_^
1.1 对照avrx目录下的Mmakefile文件,确定OS所需要的文件
            ASRC =monitor.s \
                serialio.s \
                avrx_tasking.s \
                avrx_semaphores.s \
                avrx_resetsemaphore.s \
                avrx_reschedule.s \
                avrx_singlestep.s \
                avrx_terminate.s \
                avrx_halt.s \
                avrx_priority.s \
                avrx_suspend.s \
                avrx_testsemaphore.s \
                avrx_message.s \
                avrx_recvmessage.s \
                avrx_timequeue.s \
                avrx_starttimermessage.s \
                avrx_canceltimer.s \
                avrx_canceltimermessage.s\
                avrx_generatesinglestepinterrupt.s\
                avrx_eeprom.s

        OBJ =        $(ASRC:.s=.o)


   1.2将所有的.s文件改为.s90,注意serialio.s90(serialio.s)可以不用!后面再讲
   1.3运行IAR AVR,将以上更改的文件加入到工程中(serialio.s90不用加)
   1.4编泽生成“library”
   1.5将生成的目标文件AVRX.R90更改为AVRX.LIB

jangyouhua 发表于 2008-7-16 15:54:15

这是更改好的库生成工程!!点击此处下载 ourdev_349490.rar(文件大小:560K) (原文件名:AVRXIAR.rar)

jangyouhua 发表于 2008-7-16 15:56:31

2. AVRX库与自已的工程熔合注意事项:
   2.1 将AVRX.lib拷入自已的工程主目录
   2.2 将几个主要头文件:avrx.havrx.incavrx-ctoasm.incavrx-io.havrx-signal.h...拷入工程主目录
   2.3 将avrx_iar_vect.s文件改名avrx_iar_vect.s90后入工程主目录,一定要加入!否则编泽不过!
       编泽,
      肯定出错:
                  Fatal Error: Segment AVRXDATA must be defined in a segment definition option (-Z, -b or -P)

   2.4 解决办法:
            打开avrx.inc文件:
         
            
#define _GLOBAL(Label, Size) __global Label, Size
#define _STATIC(Label, Size) __static Label, Size
#define _DATASECTION RSEG AVRXDATA:DATA
#define _CODESECTION RSEG CODE:CODE
#define _FUNCTION(A) PUBLIC A
#define _ENDFUNC
#define _PUBLIC(A) PUBLIC A
#define _EXTERN(A) EXTERN A
#define _MODULE(A) MODULE A
#define _ENDMOD ENDMOD
#define _END END
#define lo8_pm(A) LOW(A/2)
#define hi8_pm(A) HIGH(A/2)
#define lo8(A) LOW(A)
#define hi8(A) HIGH(A)
#define _DB DB
#define _EQU(A,B) A: EQU B
#define _ALIGN EVEN
#define _SFR_IO_ADDR(A) (A)   /* IAR does not use this */

是“#define _DATASECTION RSEG AVRXDATA:DATA“中的”AVRXDATA“诺的火!打开工程的OUTPUT下的
工程配制文件:.xcl (注意有二个.xcl) 将AVRXDATA段加入内部Ram数据区就可以了

// Data (SRAM, external ROM or external NV RAM) memory
-Z(DATA)TINY_I,TINY_Z,TINY_N=_..X_SRAM_TBASE:+_..X_SRAM_TSIZE
-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_CSTACK_BASE-_..X_CSTACK_END
-Z(DATA)HEAP+_..X_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)IOSTREAM_N#_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)NEAR_HEAP+_..X_NEAR_HEAP_SIZE=_..X_SRAM_BASE-_..X_SRAM_END
-Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE-_..X_RSTACK_END
-Z(DATA)NEAR_I,NEAR_Z,NEAR_N=_..X_SRAM_BASE-_..X_SRAM_END

-Z(DATA)AVRXDATA=_..X_SRAM_BASE-_..X_SRAM_END

jangyouhua 发表于 2008-7-16 16:14:49

3.定义中断向量
    用过IAR高手,应该知道怎改了!写了好长时间,等有空再加上!

steven 发表于 2008-7-16 16:52:19

mark and up!

yaya001 发表于 2008-7-16 17:07:45

留个记号 关注

bridge_chen_26 发表于 2008-7-19 16:38:11

强啊,我还在为gcc源码到iar的移植发愁呢
谁能将Procyon AVRlib移植到iar就好了,库很多啊

weiloon 发表于 2010-2-3 17:40:37

mark

nicksean 发表于 2010-2-3 20:46:36

mark

xumcu 发表于 2010-6-4 23:01:36

主啊,强啊,能不能再讲解一个实例,说明怎么应用就更好了

Maurice 发表于 2010-6-14 15:00:53

绝对菜鸟的我从未用过GCC和AVRX,看了这么好的帖子,也忍不住想做一次avrx到IAR的移植,下载了LZ提供的AVRXIAR.rar,按照LZ教程的步骤一步一步做后,IAR成功编译!于是将自己的项目融入,更改LINK文件,再更改向量表,IAR再次成功编译!IAR DEBUG选为Simulator后调试,结果发现程序跑不了多少,cstack和rstack即变为0x0000(有时对某个地方有点小改动,又只显示它们溢出),万般无奈,还望各位高人指点一二

zl_123 发表于 2013-10-29 19:37:29

mark                              

horary 发表于 2020-5-22 14:04:27

顶一下,学习学习!
页: [1]
查看完整版本: AVRX在IAR上的移植!