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

 
 
> кодить под арм, хочу научится мало мальски
_chaos_
сообщение May 20 2008, 08:43
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 20-05-08
Пользователь №: 37 653



День добрый!
Необходимо чуть-чуть разобраться с разработкой под АРМ.
Что я имею: есть собранный сишный компилер. проги на нем пишу, так сказать высокоуровневые.
но необходимо научится работать с ГПИО и переводить проц в спящий режим. тут как я понимаю С++ и тп не поможет. нашел на сайте АТМЕЛ доки и какие-то либы к AT91SAM9260 а именно softpack-1.4-at91sam9260-ek-web.zip
там есть примеры, но не один пример не собирается: вываливается ошибка
chaos@penguin:~/Work/Eddy/App/Hibernate> make
/opt/lemonix/cdt/bin/arm-linux-gcc -Wall -mlong-calls -ffunction-sections -g -I../at91lib/boards/at91sam9260-ek -I../at91lib/peripherals -I../at91lib/components -I../at91lib -Dat91sam9260 -Dsdram -c -o obj/sdram_stdio.o ../at91lib/utility/stdio.c
../at91lib/utility/stdio.c:49: error: variable 'r' has initializer but incomplete type


возникло несколько вопросов:
1. поможет мне данная либа с этими 2мя задачами? если нет куда копать
2. как побороть ошибку?

Заранее благодарен
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение May 20 2008, 09:54
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_chaos_ @ May 20 2008, 11:43) *
но необходимо научится работать с ГПИО и переводить проц в спящий режим. тут как я понимаю С++ и тп не поможет.
А как вы думаете, что делает эта библиотека? В конечном счете она пишет в регистры периферии. То же самое прекрасно делается на "С++ и т.п.". Весьма вероятно, что эта библиотека сама написана на "С++ и т.п.". Вам необходимо найти (или написать свой) заголовочный файл, в котором будут описаны регистры периферии (описаны как обычные volatile-переменные). Что-нибудь вроде ioAT91SAM9260.h. Скорее всего он есть в составе вашей библиотеки. А дальше читать описание процессора, разделы "ГПИО" и "спящий режим", там будет написано, за что отвечает каждый из регистров. Ну а дальше все сводится к присвоению данных соотвествующим переменным-регистрам.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_chaos_
сообщение May 20 2008, 10:31
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 20-05-08
Пользователь №: 37 653



Цитата(Сергей Борщ @ May 20 2008, 12:54) *
Вам необходимо найти (или написать свой) заголовочный файл, в котором будут описаны регистры периферии (описаны как обычные volatile-переменные). Что-нибудь вроде ioAT91SAM9260.h. Скорее всего он есть в составе вашей библиотеки.

чего-то я недопанимаю sad.gif а как будут связаные переменные и регистры?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 20 2008, 11:32
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_chaos_ @ May 20 2008, 13:31) *
чего-то я недопанимаю sad.gif а как будут связаные переменные и регистры?
А вы найдите этот файл и посмотрите. Вот, например, для AT91SAM7:
Код
typedef volatile unsigned int AT91_REG;// Hardware register definition
#define AT91_CAST(a) (a)
typedef struct _AT91S_CKGR {
    AT91_REG     CKGR_MOR;     // Main Oscillator Register
    AT91_REG     CKGR_MCFR;     // Main Clock  Frequency Register
    AT91_REG     Reserved0[1];     //
    AT91_REG     CKGR_PLLR;     // PLL Register
} AT91S_CKGR, *AT91PS_CKGR;
// -------- CKGR_MOR : (CKGR Offset: 0x0) Main Oscillator Register --------
#define AT91C_CKGR_MOSCEN     (0x1 <<  0) // (CKGR) Main Oscillator Enable
#define AT91C_CKGR_OSCBYPASS  (0x1 <<  1) // (CKGR) Main Oscillator Bypass
#define AT91C_CKGR_OSCOUNT    (0xFF <<  8) // (CKGR) Main Oscillator Start-up Time
// -------- CKGR_MCFR : (CKGR Offset: 0x4) Main Clock Frequency Register --------
#define AT91C_CKGR_MAINF      (0xFFFF <<  0) // (CKGR) Main Clock Frequency
#define AT91C_CKGR_MAINRDY    (0x1 << 16) // (CKGR) Main Clock Ready
// -------- CKGR_PLLR : (CKGR Offset: 0xc) PLL B Register --------
#define AT91C_CKGR_DIV        (0xFF <<  0) // (CKGR) Divider Selected
#define     AT91C_CKGR_DIV_0                    (0x0) // (CKGR) Divider output is 0
#define     AT91C_CKGR_DIV_BYPASS               (0x1) // (CKGR) Divider is bypassed
#define AT91C_CKGR_PLLCOUNT   (0x3F <<  8) // (CKGR) PLL Counter
#define AT91C_CKGR_OUT        (0x3 << 14) // (CKGR) PLL Output Frequency Range
#define     AT91C_CKGR_OUT_0                    (0x0 << 14) // (CKGR) Please refer to the PLL datasheet
#define     AT91C_CKGR_OUT_1                    (0x1 << 14) // (CKGR) Please refer to the PLL datasheet
#define     AT91C_CKGR_OUT_2                    (0x2 << 14) // (CKGR) Please refer to the PLL datasheet
#define     AT91C_CKGR_OUT_3                    (0x3 << 14) // (CKGR) Please refer to the PLL datasheet
#define AT91C_CKGR_MUL        (0x7FF << 16) // (CKGR) PLL Multiplier
#define AT91C_CKGR_USBDIV     (0x3 << 28) // (CKGR) Divider for USB Clocks
#define     AT91C_CKGR_USBDIV_0                    (0x0 << 28) // (CKGR) Divider output is PLL clock output
#define     AT91C_CKGR_USBDIV_1                    (0x1 << 28) // (CKGR) Divider output is PLL clock output divided by 2
#define     AT91C_CKGR_USBDIV_2                    (0x2 << 28) // (CKGR) Divider output is PLL clock output divided by 4

#define AT91C_BASE_CKGR      (AT91_CAST(AT91PS_CKGR)     0xFFFFFC20) // (CKGR) Base Address

// использование:

void Test()
{
    AT91C_BASE_CKGR->CKGR_MOR = AT91C_CKGR_MOSCEN | AT91C_CKGR_DIV_0 | AT91C_CKGR_USBDIV_0;
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:20
Рейтинг@Mail.ru


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