|
Ошибка в тестовом проекте Keil. |
|
|
|
Aug 24 2010, 08:27
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Помогите разрбраться. Делаю простой тестовый проект для LPC2478 Код #include <stdio.h> #include <LPC24xx.H>
int main (void) {
while (1) { ; /* ... */ } } При запуске дебагера выдает ошибку в файле LPC2400.s *** error 65: access violation at 0xA0033000 : no 'read' permission при исполнении кода в помеченной (//!!!!) строке Код EMC_DYN_RASCAS3_Val EQU 0x00000303 …………………………….. ; Dummy read (set SDRAM Mode register) IF (EMC_DYNCS0_SETUP != 0) LDR R4, =DYN_MEM0_BASE LDR R5, =(EMC_DYN_RASCAS0_Val:AND:0x00000300); get CAS Latency LSR R5, #4 ; set CAS Latency (Bit4..6) IF ((EMC_DYN_CFG0_Val:AND:0x00004000) != 0) ORR R5, R5, #0x02 ; set burst length 4 (Bit0..2) LSL R5, #11 ELSE ORR R5, R5, #0x03 ; set burst length 8 (Bit0..2) LSL R5, #12 ENDIF ADD R4, R4, R5 //!!!! LDR R4, [R4, #0] ENDIF IF (EMC_DYNCS1_SETUP != 0) С другими МК, например LPC2129, дебагер работает нормально. Правда и Startup у них разный. Вторая проблема с DMA Есть код (пример написанный не мной) Код #define DMA_SRC 0x7FD00000 #define DMA_DST 0x7FD01000 ………………………………….. volatile BYTE *TXBuffer = (BYTE *)(DMA_SRC); volatile BYTE *SRXBuffer = (BYTE *)(DMA_DST); …………………………………………. for ( i = 0; i < BUFSIZE; i++ ) /* clear buffer */ { TXBuffer[i] = i; RXBuffer[i] = 0; } При присвоении элементам буферов значений возникают ошибки *** error 65: access violation at 0x7FD00000 : no 'write' permission *** error 65: access violation at 0x7FD01000 : no 'write' permission *** error 65: access violation at 0x7FD00001 : no 'write' permission *** error 65: access violation at 0x7FD01001 : no 'write' permission …………………………. Дебагер с DMA работать не может?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 18)
|
Aug 25 2010, 05:26
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Согласен, что я что-то не доделал, но что? По первому вопросу ошибка возникает в Startup, я добавил в сгенерённый Keil-ом проект файл *.c с пустой функцией main(), ни к каким банкам памяти ни контроллерам USB обращения нет. По второму вопросу (проблема с DMA) инициализация DMA идёт при старте программы, вне main() и подпрограмм Код #define DMA_SRC 0x7FD00000 #define DMA_DST 0x7FD01000 ………………………………….. volatile BYTE *TXBuffer = (BYTE *)(DMA_SRC); volatile BYTE *SRXBuffer = (BYTE *)(DMA_DST); Это не правильно? Этот код из примера, а т.к. по ARM-ам я только учусь поэтому пришедший код с Keil и с макеткой считаю правильным. Наверное не прав. Но не думаю, что эти программы не проверены.
|
|
|
|
|
Aug 27 2010, 06:02
|
Знающий
   
Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709

|
Проверил. Все пустые (с пустой main функцией) проекты LPC24x у меня не работают, все установки по умолчанию. Те же проекты LPC23x работают нормально. Для проектов LPC24x надо ещё что-то доделывать? По проблеме с DMA, установки доступа к памяти привёл в приложении. Для нормальной работы с DMA какие-то регистры ещё инициализировать нужно?
Эскизы прикрепленных изображений
|
|
|
|
|
Aug 27 2010, 07:29
|
Местный
  
Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737

|
Цитата(Oleg_IT @ Aug 27 2010, 09:02)  Все пустые (с пустой main функцией) проекты LPC24x у меня не работают Хорошо бы сжатый проект приложить. Вопрос решится на раз-два.
|
|
|
|
|
Aug 27 2010, 10:08
|
Местный
  
Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737

|
Цитата(Oleg_IT @ Aug 27 2010, 12:50)  по мануалу эта область обозначена как Reserved По какому мануалу? 72-я страница манула на 24хх Table 65. Memory bank selection Chip select pin Address range Memory type Size of range CS0 0x8000 0000 - 0x80FF FFFF Static 16 MB CS1 0x8100 0000 - 0x81FF FFFF Static 16 MB CS2 0x8200 0000 - 0x82FF FFFF Static 16 MB CS3 0x8300 0000 - 0x83FF FFFF Static 16 MB DYCS0 0xA000 0000 - 0xAFFF FFFF Dynamic 256 MB DYCS1 0xB000 0000 - 0xBFFF FFFF Dynamic 256 MB DYCS2 0xC000 0000 - 0xCFFF FFFF Dynamic 256 MB DYCS3 0xD000 0000 - 0xDFFF FFFF Dynamic 256 MB p.s. не совсем про размещение, а про ноги, но по той теме.
|
|
|
|
|
Aug 31 2010, 20:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
У меня тоже вопрос по теме, хотя и с другим процом - скачал с Кейла примеры к демоборду mcb1700, беру mcb1700_http_demo. Загружаю в Кейл, жму Ф7 и получаю кучу ошибок. Не хочень компилировать \web и создавать web.c, - пока не понял на что ругается но там есть (был с самого начала) уже кем-то созданный ранее, а в \obj лежит уже скомпилированный http_demo.axf. Но когда я пытаюсь скомилировать, оно ругается даже на конструкции типа: Код PINCON->PINSEL1 &= ~(3<<18); /* P0.25 is GPIO */ PINCON->PINSEL1 |= (1<<18); /* P0.25 is AD0.2 */
SC->PCONP |= (1<<12); /* Enable power to ADC block */
ADC->ADCR = (1<< 2) | /* select AD0.2 pin */ Потому что в lpc17xx.h нет "SC, PINCON, ADC", там они "LPC_SC, LPC_PINCON, LPC_ADC"! Аналогично и в других .с-файлах. Я конечно могу пройтись по ним и исправить. или переопределить, но вопрос - а как-же оно было скомпилировано?! (А ведь было потому что присутствует изначально .axf) Или я что-то не так делаю?
|
|
|
|
|
Sep 1 2010, 20:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(igorsk @ Sep 1 2010, 00:58)  Наверно исходники делались со старой версией хидеров. Не знаю "старой" или "новой", но я понял в чем дело - файл в самом Кейле LPC17xx.h и такой жу файл в CMSIS - разные, в последнем - без префикса. Теперь осталось понять. как этой самой CMSIS не в демках а в своих проектах пользоваться. P.S. Я вобще на АРМы/Кортексы только перелез, и с Кейлом никогда не работал (до этого много работал в IAR MSP430/AVR и MPLAB HiTechC ).
|
|
|
|
|
Sep 5 2010, 04:54
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227

|
Цитата(Oleg_IT @ Sep 3 2010, 20:20)  Прошу прощения, я всё о своём...... #define DMA_SRC 0x7FD00000 #define DMA_DST 0x7FD01000Воткнул в свой проект Ваш кусок кода... все прекрасно работает... Хотя никаких дополнительных усилий по инициализации сего блока памяти не предпринимал... Попробуйте ради экперимента разместить в основной области памяти, попробуйте снизить скорость JTAG'a, можете попробовать из SEGGER'a напрямую записать в эту память.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|