|
USB загрузчик для LPC2368, Может у кого была необходимость в загрузчике для LPC-ек. Просьба под |
|
|
|
Jul 4 2008, 15:01
|
Группа: Новичок
Сообщений: 14
Регистрация: 9-08-06
Пользователь №: 19 420

|
Доброго времени суток. Возникла потребность в USB загрузчике для LPC. Может есть аналог SAM-BA для NXP-ых продуктов? Подскажите пожалуйста в какую сторону смотреть.
|
|
|
|
|
 |
Ответов
|
Jul 14 2008, 22:27
|
Группа: Новичок
Сообщений: 14
Регистрация: 9-08-06
Пользователь №: 19 420

|
Вопрос по TNK-loader: Код ... //---- Set interrupts vectors ptr = (unsigned int *)IRQ_RAM_ADDR; *ptr = 0xE59FF018; //-- ldr pc, [pc, #24] ptr = (unsigned int *)FIQ_RAM_ADDR; *ptr = 0xE59FF018; ... Зачем по адресу IRQ_RAM_ADDR(FIQ_RAM_ADDR) кладется число 0xE59FF018? И попутный вопрос: Код void tn_usb_lpc_cmd_write(int cmd, int data) { E1A0C00D mov r12, sp E92DD800 stmfd sp!, {r11-r12, lr-pc} E24CB004 sub r11, r12, #0x00000004 E24DD008 sub sp, sp, #0x00000008 E50B0010 str r0, [r11, #-0x010] E50B1014 str r1, [r11, #-0x014] USBDevIntClr = CDFULL | CCEMTY; // clear CDFULL/CCEMTY E3A0328F mov r3, #0xF0000008 E28336FE add r3, r3, #0x0FE00000 E2833CC2 add r3, r3, #0x0000C200 E3A02030 mov r2, #0x00000030 E5832000 str r2, [r3] USBCmdCode = 0x00000500 | (cmd << 16); // write command code E59F208C ldr r2, [pc, #+0x08C] E51B3010 ldr r3, [r11, #-0x010] E1A03803 mov r3, r3, lsl #0x10 E3833C05 orr r3, r3, #0x00000500 [color=#FF0000]===>>>E5823000 str r3, [r2] <<<<<<=============[/color] while(!(USBDevIntSt & CCEMTY)); E3A034FF mov r3, #0xFF000000 E283360E add r3, r3, #0x00E00000 E2833CC2 add r3, r3, #0x0000C200 E5933000 ldr r3, [r3] E2033010 and r3, r3, #0x00000010 E3530000 cmp r3, #0x00000000 0AFFFFF8 beq 0x000032E0 ... До выполнения указанной строчки регистры: r0 = 0xfe r1 = 0x00 r2 = 0xffe0c210 r3 = 0x00fe0500 c r4 по r10 = 0x00 r11 = 0x4000209c r12 = 0x400020a0 r13(sp) = 0x40002088 r14 = 0x00000db0 r15 = 0x000032dc cpsr = 0xa00000df данные: data = 0x00 cmd = 0x000000fe После выполнения указанной строчки проваливаемся в dabort_handler. Может кто-то сможет пояснить?
|
|
|
|
|
Jul 15 2008, 08:31
|
Группа: Новичок
Сообщений: 14
Регистрация: 9-08-06
Пользователь №: 19 420

|
Цитата(Сергей Борщ @ Jul 15 2008, 12:51)  Там же в коментариях написано: это код команды ldr pc, [pc, #24] Смысл какой? Просто увеличить PC? Или же, всё-таки, разместить по адресу IRQ_RAM_ADDR число 0xe59ff018? Если же просто увеличить PC, то я смысл этого действия вообще не вижу. Может сможет кто объяснить? Цитата(HARMHARM @ Jul 15 2008, 14:20)  Это инициализация векторов прерываний (таблица в RAM), делается перед remap (MEMMAP =0x2). Код int main() { unsigned int * ptr; int state; MEMMAP = 0x1; //tn_arm_disable_interrupts(); ctl_global_interrupts_disable(); Init_CRC32_Table(); //---- Set interrupts vectors ptr = (unsigned int *)IRQ_RAM_ADDR; *ptr = 0xE59FF018; //-- ldr pc, [pc, #24] ptr = (unsigned int *)FIQ_RAM_ADDR; *ptr = 0xE59FF018; //-- ldr pc, [pc, #24] //--- Put IRQ & FIQ vectors in RAM ptr = (unsigned int *)IRQ_RAM_FUNC_ADDR; *ptr = (unsigned int)&cpu_irq_isr; ptr = (unsigned int *)FIQ_RAM_FUNC_ADDR; *ptr = (unsigned int)&cpu_fiq_isr; #ifndef RUN_FW_ALWAYS //--- Check 'Run as Loader' mark ptr =(unsigned int *)RAM_START_ADDR; if(!(*ptr == 0x12345678 && *(ptr+1) == 0x43211234)) { do_switch_to_firmware(); //-- Never returns } #else start_firmware(); //-- Never returns #endif //------ Clear FW loader marks ptr =(unsigned int *)RAM_START_ADDR; *ptr = 0; ptr++; *ptr = 0; HardwareInit(); и т.д. и т.п......... (В курсе: MEMMAP =0x2 -> User RAM Mode. Interrupt vectors are re-mapped to Static RAM). Вектора IRQ, FIQ он явно кладет по нужным адресам. MEMMAP же нигде в программе больше не трогается. ???
|
|
|
|
Сообщений в этой теме
Alex_akn USB загрузчик для LPC2368 Jul 4 2008, 15:01 DmitryV Цитата(Alex_akn @ Jul 4 2008, 19:01) Добр... Jul 4 2008, 19:02 zltigo Цитата(DmitryV @ Jul 4 2008, 21:02) На да... Jul 12 2008, 18:08 gte А скоро это в месяцах, кварталах или годах? Jul 5 2008, 06:14 DmitryV Цитата(gte @ Jul 5 2008, 10:14) А скоро э... Jul 5 2008, 18:05 zltigo http://www.tnkernel.com/usb_fw_upgrader.html Jul 5 2008, 08:21 gte Спасибо. Мой вопрос был без подвоха, учитывая скор... Jul 6 2008, 06:47 Alex_akn Вот это вещь - http://www.tnkernel.com/usb_fw_upgr... Jul 6 2008, 09:45 zltigo Цитата(Alex_akn @ Jul 6 2008, 11:45) ..ка... Jul 6 2008, 09:54  Alex_akn Цитата(zltigo @ Jul 6 2008, 15:54) В перв... Jul 6 2008, 10:06   zltigo Цитата(Alex_akn @ Jul 6 2008, 12:06) Это ... Jul 6 2008, 10:18    Alex_akn Цитата(zltigo @ Jul 6 2008, 16:18) USB хи... Jul 6 2008, 10:44     zltigo Цитата(Alex_akn @ Jul 6 2008, 12:44) Отку... Jul 6 2008, 10:56      Alex_akn Цитата(zltigo @ Jul 6 2008, 16:56) Выстав... Jul 6 2008, 11:10       zltigo Цитата(Alex_akn @ Jul 6 2008, 13:10) Что ... Jul 6 2008, 11:25      Alex_akn Цитата(zltigo @ Jul 6 2008, 16:56) Выстав... Jul 6 2008, 11:31  Alex_akn Цитата(Сергей Борщ @ Jul 15 2008, 12:51) ... Jul 15 2008, 07:46   HARMHARM Цитата(Alex_akn @ Jul 15 2008, 10:46) Сер... Jul 15 2008, 08:20   aaarrr Цитата(Alex_akn @ Jul 15 2008, 12:31) Смы... Jul 15 2008, 08:53    Alex_akn Цитата(aaarrr @ Jul 15 2008, 14:53) ldr p... Jul 15 2008, 09:19   HARMHARM Цитата(Alex_akn @ Jul 15 2008, 11:31) (В ... Jul 15 2008, 10:17    Alex_akn Спасибо за ответы. Кое-что стало понятно.
Как кома... Jul 16 2008, 06:24     HARMHARM Цитата(Alex_akn @ Jul 16 2008, 09:24) Спа... Jul 16 2008, 08:23      Alex_akn Цитата(HARMHARM @ Jul 16 2008, 14:23) Мож... Jul 16 2008, 20:46       Alex_akn Загрузчик заработал, но выяснилась такая вещь:
в г... Jul 20 2008, 09:39        Axel Цитата(Alex_akn @ Jul 20 2008, 13:39) Как... Jul 28 2008, 04:19 vet после выполнения вышеприведенного кода пресловутая... Jul 15 2008, 09:56 dmtr А нет ли загрузчика, чтобы грузил программу через ... Jul 26 2008, 07:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|