реклама на сайте
подробности

 
 
> Помогите пожалуйста написать "Hello World!" для SAM9260, SK-AT91SAM9XE512-S3E
mashler
сообщение Jun 19 2009, 10:32
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 13-05-09
Пользователь №: 49 013



Всем доброго дня!
Я сам в МК полный чайник, но в программировании вроде бы далеко не валенок (умею писать на С и Tasm). Уже мучаюсь 2 месяца, никак не могу написать простейшую программу которая будет загружаться с помощю Bootstrap из Dataflash CS0 и выводить сообщение на DBGU.
Может у когонибудь есть пример, или просто кто то подскажет что нужно делать.
Суть в том что первичный Bootstrap стартует и видит программу (8 векторов). Программа загружается по адресу 0х8000 из CS0.

А дальше ничего не происходит.

Код
>Start AT91Bootstrap...
Copy application ...
Run ...


Я так понимаю дело в C-Startup который я взял из Bootstrap 1.6 sources. Просто до меня никак не дойдет как вообще должнен быть огранизован запуск моей программы, должен ли я повторно сделать Remap и должен ли я инициализировать осцилятор если эти действия уже были сделаны в Bootstrap. И вообще что минимально я должен сделать чтобы она запустилась?

Вот мой код C-Startup и моя программа. Стыдно тут такое спрашивать, но очень прошу помогите кто чем сможет. crying.gif
CODE

.section start
.text

#include "include/part.h"

/*----------------------------------------------------------------------------
Area Definition
----------------
Must be defined as function to put first in the code as it must be mapped
at offset 0 of the flash EBI_CSR0, ie. at address 0 before remap.
_---------------------------------------------------------------------------*/

/* Application startup entry point */

.globl reset
.align 4
reset:

/* Exception vectors (should be a branch to be detected as a valid code by the rom */
_exception_vectors:
b reset_vector /* reset */
b undef_vector /* Undefined Instruction */
b swi_vector /* Software Interrupt */
b pabt_vector /* Prefetch Abort */
b dabt_vector /* Data Abort */
b rsvd_vector /* reserved */
b irq_vector /* IRQ : read the AIC */
b fiq_vector /* FIQ */

undef_vector:
b undef_vector
swi_vector:
b swi_vector
pabt_vector:
b pabt_vector
dabt_vector:
b dabt_vector
rsvd_vector:
b rsvd_vector
irq_vector:
b irq_vector
fiq_vector:
b fiq_vector
reset_vector:

/* Init the stack */
_init_stack:
ldr sp,=TOP_OF_MEM

/* Test if main oscillator is enabled */
ldr r0,=AT91C_PMC_SR
ldr r1, [r0]
ldr r2,=AT91C_PMC_MOSCS
ands r1, r1, r2
bne _switch_to_mosc


/* Enable the main oscillator */
_enable_mosc:
ldr r0,=AT91C_PMC_MOR
mov r1, #(0x40 << 8)
ldr r2,=AT91C_CKGR_MOSCEN
orr r1, r1, r2
str r1, [r0]
ldr r0,=AT91C_PMC_SR
1:
ldr r1, [r0]
ldr r2,=AT91C_PMC_MOSCS
ands r1, r1, r2
beq 1b

/* Test if MCK == SLOW CLOCK */
_switch_to_mosc:
ldr r0,=AT91C_PMC_MCKR
ldr r1,=AT91C_PMC_CSS
ldr r2, [r0]
and r2, r2, r1
mov r1, #0
cmp r1, r2
/* No => Do nothing */
bne _init_bss
/* Yes => Switch to the main oscillator */
ldr r1,=AT91C_PMC_CSS_MAIN_CLK
ldr r2,=AT91C_PMC_PRES_CLK
orr r1, r1, r2
str r1, [r0]
ldr r0,=AT91C_PMC_SR
1:
ldr r1, [r0]
ldr r2,=AT91C_PMC_MCKRDY
ands r1, r1, r2
beq 1b

/* Copy the data section in RAM at .data link address */
_init_data:
ldr r2, =_lp_data
ldmia r2, {r1, r3, r4}
1:
cmp r3, r4
ldrcc r2, [r1], #4
strcc r2, [r3], #4
bcc 1b

/* Initialize the bss segment */
_init_bss:
adr r2, _lp_bss
ldmia r2, {r3, r4}
mov r2, #0
1:
cmp r3, r4
strcc r2, [r3], #4
bcc 1b

/* Branch on C code Main function (with interworking) */
_branch_main:
ldr r4, = main
mov lr, pc
bx r4

/* Branch to the application at the end of the bootstrap init */
//_go:
// ldr r1, =MACH_TYPE
// mov lr, pc
// bx r0

.align
_lp_data:
.word _etext
.word _sdata
.word _edata

_lp_bss:
.word _sbss
.word _ebss


Код
#include "include/part.h"
#include "include/main.h"
#include "include/debug.h"

int main () {
    hw_init();

    dbg_print("Hello World!...\n\r");
    return 0;
}


Сообщение отредактировал mashler - Jun 19 2009, 10:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Jun 19 2009, 14:14
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
перенос строки после Run

Обычно это означает, что загрузчик распознал, что загружаемая программа стартовала. А распознает он это, если примет какой-нибудь символ по уарту. Обычно ентер. Либо грязь, похожую на энтер.

Лучше не хелло ворд, а зацикленный хело ворд.

---
Не исключено, что загрузчик может устанавливать все регистры по дефолту....

Сообщение отредактировал DpInRock - Jun 19 2009, 14:18


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 19 2009, 14:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ Jun 19 2009, 18:14) *
Обычно это означает, что загрузчик распознал, что загружаемая программа стартовала. А распознает он это, если примет какой-нибудь символ по уарту. Обычно ентер. Либо грязь, похожую на энтер.

Да это же терминал просто, что он распознает? Просто раньше процессор расклинивался насмерть еще до того, как успевал отправиться последний CR, переданный Bootstrap'ом.

Цитата(DpInRock @ Jun 19 2009, 18:14) *
Не исключено, что загрузчик может устанавливать все регистры по дефолту....

Этим никто себя не утруждает. Тем более что было написано в каком состоянии процессор выходит после бута - с настроенными клоками, памятью и т.д.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mashler   Помогите пожалуйста написать "Hello World!" для SAM9260   Jun 19 2009, 10:32
- - aaarrr   Цитата(mashler @ Jun 19 2009, 14:32) Я та...   Jun 19 2009, 11:14
|- - mashler   Спасибо большое что отозвались =) Цитата(aaarrr ...   Jun 19 2009, 11:21
- - aaarrr   Пардон, не заметил, что тут еще Bootstrap использу...   Jun 19 2009, 11:31
|- - mashler   Цитата(aaarrr @ Jun 19 2009, 15:31) Пардо...   Jun 19 2009, 11:43
|- - aaarrr   Цитата(mashler @ Jun 19 2009, 15:43) Я в ...   Jun 19 2009, 11:49
- - mashler   А как можно расчитать TOP_OF_MEMORY? или его можно...   Jun 19 2009, 11:50
- - aaarrr   Можно.   Jun 19 2009, 11:56
- - mashler   Всеравно ничего не получается, с настройками Make...   Jun 19 2009, 13:16
- - aaarrr   Пином, пином помигайте. Мало ли что у Вас еще с db...   Jun 19 2009, 13:21
|- - mashler   Цитата(aaarrr @ Jun 19 2009, 17:21) Пином...   Jun 19 2009, 13:38
|- - aaarrr   Цитата(mashler @ Jun 19 2009, 17:38) Я да...   Jun 19 2009, 13:57
- - DpInRock   У меня самба грузит проц с автовыходом (скрипт так...   Jun 19 2009, 16:48
- - mashler   Вообщем с помощью ваших заклинаний всетки мне удал...   Jun 22 2009, 13:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 11:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01392 секунд с 7
ELECTRONIX ©2004-2016