Beginning 0 26 августа, 2007 Опубликовано 26 августа, 2007 · Жалоба Есть следующий код: #define REG8(x) (*((volatile unsigned char *)(x))) #define REG16(x) (*((volatile unsigned short *)(x))) #define REG32(x) (*((volatile unsigned long *)(x))) typedef struct { reg16 dr; /* Data Register */ reg16 pad0; reg8 rsr_ecr; /* Receive Status Reg. (Read) / Error Clear Reg. (Write) */ reg8 pad1[3]; reg32 rsrvd1[4]; reg16 fr; /* Flag Register */ reg16 pad2; reg32 rsrvd2[2]; reg16 ibrd; /* Integer Baud Rate Divisor Register */ reg16 pad3; reg16 fbrd; /* Fractional Baud Rate Divisor Register */ reg16 pad4; reg16 lcr_h; /* Line Control Register, High Byte */ reg16 pad5; reg16 cr; /* Control Register */ reg16 pad6; reg16 ifls; /* Interrupt FIFO Level Select */ reg16 pad7; reg16 imsc; /* Interrupt Mask Set/Clear */ reg16 pad8; reg16 ris; /* Raw Interrupt Status */ reg16 pad9; reg16 mis; /* Masked Interrupt Status */ reg16 padA; reg16 icr; /* Interrupt Clear Register */ reg16 padB; reg16 dmacr; /* DMA Control Register */ reg16 padC; } UART; #define UART0 ((UART *)(UART0_BASE)) #define UART1 ((UART *)(UART1_BASE)) Не могу понять почему не прокатывает выражение типа x=UART1.dr Ругается на это так: App\main.c(95): error: #154: expression must have struct or union type Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 26 августа, 2007 Опубликовано 26 августа, 2007 · Жалоба x=UART1->dr; Говорите среду кейловскую освоили и полюбили всй душой? Осталось с основами основ языка 'C' ознакомиться. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 26 августа, 2007 Опубликовано 26 августа, 2007 · Жалоба Спасибо за ответ, попробую. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 26 августа, 2007 Опубликовано 26 августа, 2007 · Жалоба ... попробую. Пробовать не надо - сразу заработает, однако, ибо UART1 это у Вас ничто иное, как указатель на структуру. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyDDD 0 26 августа, 2007 Опубликовано 26 августа, 2007 · Жалоба Основные различия между ARM7TDMI и ARM720T: - наличие встроенного сопроцессора MMU (memory management unit), наличие кеша и буфера записи. - у ARM720T существуют дополнительные команды для работы с сопроцессорами MCR и MRC. Когда MMU не включен (а он такой после сброса) ARM720T-ый камень это чистой воды ARM7TDMI. "Послекейловские" программы работают на ура! :) На сколько мне известно MMU это та штука, которая необходима для Linux и Windows CE. На ARM720T можно запустить Windows CE. Сам вплотную работаю с Cirrus Logic EP7312 и использую MMU. Ну очччень полезная штука!!! С его помощью можно легко "перекроить" карту памяти и "сшить" так как тебе надо. Супер-инструмент для реализации мультипотокового проекта, где каждый поток это типичная программа для ARM7. С сопроцессором работаю на асме. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Вообщем, код откомпилированный в Keil? запускается sharp. Но есть много неприятностей. Например, когда запускаешь дебугер пишет: *** Error: 'C:\Program Files\Keil\ARM\BIN\DARMSH.DLL' not found, или нет возможности посмотреть периферийные регистры. Вобщем, все-таки решил писать в IAR. По сему возникло несколько вопросов. Как в IAR пишется стартовый код? Где взять пару проектов, чтобы поучится и посмотреть особенности. Язык С. Инициализация на asm. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Где взять пару проектов, чтобы поучится и посмотреть особенности. Язык С. Инициализация на asm. Как это не удивительно :), но проекты в большом количестве идут вместе с компилятором. Документы по нюансам реализации 'C' (ASM/Link/Tools/...) - тоже. Документация у IAR вполне хороша. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Ктонибудь может показать пример грамотного инициализовочного файла для IAR? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 28 августа, 2007 Опубликовано 28 августа, 2007 · Жалоба Ктонибудь может показать пример грамотного инициализовочного файла для IAR? Грамотность startup, она, простите не компилятором определяется а решаемой задачей. Те, что в примерах лежат вполне грамотны в рамках решаемой ими задачи. Один из своих (вполне грамотно решаеющий МОИ задачи) в качестве примера соответствия версий 5.10 и 4.xx выкладывал буквально сегодня. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба a ссылку, или название темы с startup? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Beginning 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба Обнаружил очень неприятную засаду в IAR. Суть: В других оболочках когда мне было необходимо посмотреть, что компилятор вытворил на asm, я делал так: копировал cntrl+С сишную строку, запускал дебагер, и cntrl+F cntrl+V быстро находил то место где находится сишная строка. В IAR в дебагере поика нет. Как мне быть? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 29 августа, 2007 Опубликовано 29 августа, 2007 · Жалоба необходимо посмотреть, что компилятор вытворил на asm, я делал так.... Обалденная "технология". Вообще-то всегда и везде независимо от компилятора, отладчика, IDE, для этого просто читают листинги или сгенеренный ASM файл. Почтайте документацию на компилятор перед сном - очень помогает. P.S. А эту тему я закрываю. Ответ на основной вопрос дан исчерпывающий. Все остальные вопросы пошли не по теме и на уровне ветки для начинающих - просьба туда их и постить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться