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

 
 
> IAP неполучаеццо :(, влетает в эксепршены
klen
сообщение Aug 20 2007, 15:27
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Дошли руки до IAP, прочитал мануал, написал код - сначала не работало, потом заработало, чето потрогал руками опять перестало работать. Пока тренируюсь на вызове запроса partID. стопрацентный заход в PAbort или DAbort, в эксепшене lr коворит адрес 0x7ffffff8, прерывания отключены, вызов иапа сразу в начале main.


код вызова:
Код
#include "iap.h"

#define IAP_LOCATION 0x7ffffff1

unsigned int command[5];
unsigned int result[2];

#define PrepareSectors4Write 50
#define RAM2Flash            51
#define EraseSectors         52
#define BlankCheckSectors    53
#define ReadPartID           54
#define ReadBootCodeVersion  55
#define Compare              56
#define ReinvokeISP          57


#define CMD_SUCCESS         0      //  Command is executed successfully.
#define INVALID_COMMAND     1      //  Invalid command.
#define SRC_ADDR_ERROR      2      //  Source address is not on a word boundary.
#define DST_ADDR_ERROR      3      //  Destination address is not on a correct boundary.
#define SRC_ADDR_NOT_MAPPED 4      //  Source address is not mapped in the memory map.
#define DST_ADDR_NOT_MAPPED 5      //  Destination address is not mapped in the memory
#define COUNT_ERROR         6      //  Byte count is not multiple of 4 or is not a permitted value.
#define INVALID_SECTOR      7      //  Sector number is invalid.
#define SECTOR_NOT_BLANK    8      //  Sector is not blank.
#define SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION 9 //Command to prepare sector for write operation was not executed.
#define COMPARE_ERROR       10     //  Source and destination data is not same.
#define BUSY                11  


typedef void (*IAP)(unsigned int*,unsigned int* );
IAP iap_entry =(IAP) IAP_LOCATION;

void GetPartID ( unsigned int* pid  )
{
   command[0] = ReadPartID;
   result[0]=-1;
   result[1]=-1;
   iap_entry (command, result);
  
   *pid = result[1];
}


Че я нетак делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Aug 21 2007, 08:03
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Объясняю на пальцах.
Атрибут __interwork задаёт вызов функции в универсальном формате (из любого режима в любой режим). На компиляцию процедуры не влияет.
Атрибут __thumb задаёт компиляцию функции в thumb формате кода. Но без __interwork её невозможно вызвать из ARM режима.

Итог:
Так как в данном случае нет никакой компиляции, а есть только указание о вызове процедуры, то __thumb тут ни к селу, ни к городу.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 21 2007, 08:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Aug 21 2007, 11:03) *
Объясняю на пальцах.

Читайте по губам еще раз - напоминалка о том, что представляет из себя вызываемая функция.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
klen
сообщение Aug 22 2007, 08:48
Сообщение #4


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



.... бедные несчастные пользователи компиллера IAR...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 24 2007, 08:47
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(klen @ Aug 22 2007, 11:48) *
.... бедные несчастные пользователи компиллера IAR...

Каким тут боком вообще IAR? И 'бедность' пользователей?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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