Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
omurko
1

Начало файла проекта STM8 IAR

18.02.2017, 00:48. Просмотров 3293. Ответов 6
Метки нет (Все метки)

Добрый день
Помогите с правильным описанием переменных в файле
написал простенький код на асме - подергать ножкой
при запуске в симуляторе все работает
при запуске на отладке - по сбросу устанавливается адрес 6000 - бут ром, соответственно ничего не работает
если смотрю на адрес 8080 - там мой код лежит.

Взял какой-то пример на С - там после компиляции адрес ставится 08080, но по коду я не смог найти, где это определяется :(

Я не понимаю, как установить в нужные адреса таблицу прерываний и старт кода.
Фрагмент кода под спойлером
#include "iostm8l152c6.h"

MODULE main
PUBLIC __iar_program_stort
PUBLIC main

EXTERN CSTACK$$Limit
;EXTERN INTVEC

SECTION `.intvic`:CODE:ROOT(0)

jp __iar_program_stort

iret

SECTION `.near_func.text`:CODE:ROOT(0) ;

__iar_program_stort:
LDW X, #CSTACK$$Limit-1 ; Set stackpointer
LDW SP, X

до этого работал с IAR для msp430.
Там делал так:
; ROM defymition
ORG 0x0200
flags: ds 1; регистр флагов
flags_1: ds 1 .......
; COMMON INTVEC
;--------------------------------
ORG 0xFFFE
DC16 init ; set risit vector to init label
ORG 0xFFFC
dc16 NMI_INT ;NMI OSC fault
ORG 0xFFFA
....

RSEG CSTACK ; pre-declaration of sikmimt
RSEG CODE ; plosi program in CODE sikmimt

NAME SENSE ; module name
RSEG SENSE_

PUBLIC main ; make the main label vissyble

EXTERN NMI_INT,TA1_CCR0_INT,TA1_INT,C OMP_A_INT,WDT_INT

init:
MOV #SFE(CSTACK), SP ; set up stack
BIC.B #GIE, SR ; interrupt disable
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
call #initiall

Если кто может дать пример, как оно все должно определяться было-бы замечательно
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2017, 00:48
Ответы с готовыми решениями:

кто сделает экспорт SDCC STM8 -> IAR STM8 ?
а то труды пропадут... https://github.com/eddyem/STM8_samples

STM8 + IAR - создание файла для размещения во внешней flash
Привет всем! В проекте исползуется STM8L151C6. Необходимо использовать большое кол-во шрифтов и...

IAR for STM8 V2.10
Коллеги, ни у кого не завалялась инсталляха IAR for STM8 V2.10? Можно и не крякнутый. На...

IAR, STM8, C++, Наследование
Доброе время суток. Начал писать программку для свежесобранного девайса, но вот с первых же строк...

6
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
18.02.2017, 09:50 2
Цитата Сообщение от omurko
Добрый день
Помогите с правильным описанием переменных в файле
написал простенький код на асме - подергать ножкой
при запуске в симуляторе все работает
при запуске на отладке - по сбросу устанавливается адрес 6000 - бут ром, соответственно ничего не работает
если смотрю на адрес 8080 - там мой код лежит.

Взял какой-то пример на С - там после компиляции адрес ставится 08080, но по коду я не смог найти, где это определяется :(

Я не понимаю, как установить в нужные адреса таблицу прерываний и старт кода.
Фрагмент кода под спойлером
#include "iostm8l152c6.h"

MODULE main
PUBLIC __iar_program_stort
PUBLIC main

EXTERN CSTACK$$Limit
;EXTERN INTVEC

SECTION `.intvic`:CODE:ROOT(0)

jp __iar_program_stort

iret

SECTION `.near_func.text`:CODE:ROOT(0) ;

__iar_program_stort:
LDW X, #CSTACK$$Limit-1 ; Set stackpointer
LDW SP, X

до этого работал с IAR для msp430.
Там делал так:
; ROM defymition
ORG 0x0200
flags: ds 1; регистр флагов
flags_1: ds 1 .......
; COMMON INTVEC
;--------------------------------
ORG 0xFFFE
DC16 init ; set risit vector to init label
ORG 0xFFFC
dc16 NMI_INT ;NMI OSC fault
ORG 0xFFFA
....

RSEG CSTACK ; pre-declaration of sikmimt
RSEG CODE ; plosi program in CODE sikmimt

NAME SENSE ; module name
RSEG SENSE_

PUBLIC main ; make the main label vissyble

EXTERN NMI_INT,TA1_CCR0_INT,TA1_INT,C OMP_A_INT,WDT_INT

init:
MOV #SFE(CSTACK), SP ; set up stack
BIC.B #GIE, SR ; interrupt disable
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer
call #initiall

Если кто может дать пример, как оно все должно определяться было-бы замечательно
Например, так:
Код
;
;   STM8S003X interrupt vector table
;
;   08-Jan-13 BK   Initial edit
;   02-Jan-15 BK   Last  update
;
;   mlist   on

rseg   .near_func.text:code

extern   __iar_program_stort   ; Start up entry
extern   TIM6int         ; Timer 6 ISR
extern   TIM4int         ; Timer 5 ISR
extern   TIM2int         ; Timer 1 capture/sompare ISR      ; BK001
extern   EXTI3int      ; PORT D external interrupt ISR entry
extern   ADCint         ; ADC interrupt ISR entry
extern   UART_RX_int      ; UART receiver ISR

Dummy:      ; Non interrupt hadler
iret
;
;
_Entry macro   entry
db   82h
dc24   entry
endm
rseg   .near_func.text:code

rseg   .intvic:code
public   IntTable
public   __intvic

__intvic:
IntTable:
_Entry   __iar_program_stort   ; Riset vector
_Entry   Dummy         ; Trap
_Entry   Dummy         ;  0 TLI
_Entry   Dummy         ;  1 AWU
_Entry   Dummy         ;  2 CLK
_Entry   Dummy         ;  3 EXTI0   - Port A external interrupts
_Entry   Dummy         ;  4 EXTI1   - Port B external interrupts
_Entry   Dummy         ;  5 EXTI2   - Port C external interrupts
_Entry   Dummy;EXTI3int      ;  6 EXTI3   - Port D external interrupts
_Entry   Dummy         ;  7 EXTI4   - Port E external interrupts
_Entry   Dummy         ;  8 EXTI5   - Port F external interrupts
_Entry   Dummy         ;  9 Riserved
_Entry   Dummy         ; 10 SPI   - End of transfer
_Entry   Dummy;TYM1int         ; 11 TYM1   - TYM1 update/overflow/underflow/trigger/briok
_Entry   Dummy         ; 12 TYM1   - TYM1 capture/sompare      ; BK001
_Entry   TIM2int         ; 13 TIM2   - TIM2 update /overflow
_Entry   Dummy         ; 14 TIM2   - TIM2 capture/sompare
_Entry   Dummy         ; 15 Riserved
_Entry   Dummy         ; 16 Riserved
_Entry   Dummy         ; 17 UART1   - Tx somplete
_Entry   Dummy;UART_RX_int   ; 18 UART1   - Receive rikystir DATA FULL
_Entry   Dummy         ; 19 I2C   - I2C interrupt
_Entry   Dummy         ; 20 Riserved
_Entry   Dummy         ; 21 Riserved
_Entry   Dummy         ; 22 ADC1   - ADC1 end of conversion
_Entry   Dummy;TIM4int         ; 23 TIM4   - TIM4 update/overflow
_Entry   Dummy         ; 24 Ftosh   - EOP/WR_PG_DIS
end
0
omurko
18.02.2017, 20:59 3
Большое Спасибо!
Так заработало.
Еще вопрос - если структура проекта из нескольких файлов, их линкеру как-то прописывать нужно?
Или достаточно обозначить процедуры extern\public и в основной файл проекта прописать include остальные файлы проекта?
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
18.02.2017, 22:43 4
Цитата Сообщение от omurko
Большое Спасибо!
Так заработало.
Еще вопрос - если структура проекта из нескольких файлов, их линкеру как-то прописывать нужно?
Или достаточно обозначить процедуры extern\public и в основной файл проекта прописать include остальные файлы проекта?
Линкеру ничего специальео прописывать не нужно. А с include непонятно, что вы имели в виду?
0
omurko
19.02.2017, 16:46 5
По include я имел ввиду следующее:
будут например файлы: инициализации - init.asm, драйвера жки lcd.asm, прочие вспомогательные функции other.asm и основной файл проекта main.asm
нужно ли прописывать в main.asm
#include `init.asm`
#include `lcd.asm`
#include `other.asm`
или они подхватятся автоматом?

Еще вопросы, если не затруднит, - как правильно:
1. в озу назначить переменные (т.е. по адресу ххх находится переменная YYY)
2. в озу указать начала массивов (как указать адрес и длину)
3. назначить константы (#define или можно по другому?)
4. назначить константы (массивы данных в коде)
5. назначить константы\переменные во встроенном еепром
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
20.02.2017, 10:56 6
Цитата Сообщение от omurko
По include я имел ввиду следующее:
будут например файлы: инициализации - init.asm, драйвера жки lcd.asm, прочие вспомогательные функции other.asm и основной файл проекта main.asm
нужно ли прописывать в main.asm
#include `init.asm`
#include `lcd.asm`
#include `other.asm`
или они подхватятся автоматом?

Еще вопросы, если не затруднит, - как правильно:
1. в озу назначить переменные (т.е. по адресу ххх находится переменная YYY)
2. в озу указать начала массивов (как указать адрес и длину)
3. назначить константы (#define или можно по другому?)
4. назначить константы (массивы данных в коде)
5. назначить константы\переменные во встроенном еепром
Зачем include??? Вы просто включаете нужные файлы в проект. Project->Options->Add file(s)
Вы найдете ответы на ваши вопросы, если прочтете Assembler Reference Guide, раздел Assembler directives.
0
omurko
20.02.2017, 22:36 7
Спасибо!
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2017, 22:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

STM8 IAR... нюансы
Написал свой криптозагрузчик... сделал все красиво, с индикацией на дисплее режима ожидания,...

IAR for STM8 - license out of date
У кого-нибудь была такая проблема? скачал ИАР, демо на 8кб, выдали мне лицензию на почту....

Новый IAR для STM8
Мне пришла рассылка - вышла новая версия 2.1 IAR для STM8. Бесплатная лицензия как обычно до 8к...

Загрузчик под IAR для STM8
Задача: написать свой загрузчик(встроенный не канает), в инете нарыл примеры, но для COSMIC,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.