|
Alwinner A13 не стартует с SD-карты, Отладочная плата A13-olinuxino |
|
|
|
Mar 30 2018, 13:15
|

Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126

|
Здравствуйте! Начал осваивать Allwinner A13 и пока безуспешно. Использую отладочную плату "A13-olinuxino", загрузиться хочу с SD карты (4 ГБ класс скорости 4). Компилятор arm-none-eabi , исходник программы ниже, мигает светодиодом на порте G 9 (штатный порт на отладочной плате со светодиодом): CODE #define uint32_t unsigned long int
#define CCMBase 0x01C20000 //clock module #define Def_APB0_Gating CCMBase + 0x68
//#define Def_APB0_Gating 0x01C20068
#define GPIOBase 0x01C20800 #define GPIOIncrement 0x24
#define ALLWINNER_GPIO_A GPIOBase #define ALLWINNER_GPIO_B GPIOBase + (1*GPIOIncrement) #define ALLWINNER_GPIO_C GPIOBase + (2*GPIOIncrement) #define ALLWINNER_GPIO_D GPIOBase + (3*GPIOIncrement) #define ALLWINNER_GPIO_E GPIOBase + (4*GPIOIncrement) #define ALLWINNER_GPIO_F GPIOBase + (5*GPIOIncrement) #define ALLWINNER_GPIO_G GPIOBase + (6*GPIOIncrement) #define ALLWINNER_GPIO_H GPIOBase + (7*GPIOIncrement) #define ALLWINNER_GPIO_I GPIOBase + (8*GPIOIncrement)
#define Port_CFG0 0x00 //pin direction and function 0 to 7 #define Port_CFG1 0x04 //pin direction and function 8 to 15 #define Port_CFG2 0x08 //pin direction and function 16 to 24 #define Port_CFG3 0x0C //pin direction and function 25 to 32 #define Port_DAT 0x10 #define Port_DRV0 0x14 #define Port_DRV1 0x18 #define Port_PUL0 0x1C
void main(void) { int i; int j; int foo;
uint32_t *portGConfig; uint32_t *portGData; uint32_t *APB0Gating;
//setup pointers for registers portGConfig = (uint32_t *)(ALLWINNER_GPIO_G + Port_CFG1); portGData = (uint32_t *)(ALLWINNER_GPIO_G + Port_DAT); APB0Gating = (uint32_t *)(Def_APB0_Gating);
//enable clocking for GPIO *APB0Gating |= 0x0020; //configure port G pin 9 to output *portGConfig |= 0x10; //set output to on *portGData |= 0x0200;
Loop:
foo = 0; for (j = 0; j < 100; j++) { //toggle output *portGData ^= 0x0200;
foo=j; for (i = 0; i < 30000000; i++) { if(i>10) { foo++; } } }
goto Loop;
} Файл линковщика: Код MEMORY { RAM (XRW) : ORIGIN = 0x00000000, LENGTH = 0x00004000 /* 16 KB */ }
SECTIONS { .start : { *(.start) } > RAM .text : { *(.text) } > RAM .bss : { *(.bss) } > RAM .fill : { FILL(0x00); . = ORIGIN(RAM) + LENGTH(RAM) - 1; BYTE(0x00); } > RAM /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } /DISCARD/ : { *(.interp*) } /DISCARD/ : { *(.gnu*) } /DISCARD/ : { *(.note*) } } ассемблерный листинг: Код test.elf: file format elf32-littlearm
Disassembly of section .text.startup:
00000000 <main>: 0: e59f3030 ldr r3, [pc, #48]; 38 <main+0x38> 4: e5932068 ldr r2, [r3, #104]; 0x68 8: e3822020 orr r2, r2, #32 c: e5832068 str r2, [r3, #104]; 0x68 10: e59328dc ldr r2, [r3, #2268]; 0x8dc 14: e3822010 orr r2, r2, #16 18: e58328dc str r2, [r3, #2268]; 0x8dc 1c: e59328e8 ldr r2, [r3, #2280]; 0x8e8 20: e3822c02 orr r2, r2, #512; 0x200 24: e58328e8 str r2, [r3, #2280]; 0x8e8 28: e59f300c ldr r3, [pc, #12]; 3c <main+0x3c> 2c: e2533001 subs r3, r3, #1 30: 1afffffd bne 2c <main+0x2c> 34: eafffffb b 28 <main+0x28> мейк-скрипт: Код arm-none-eabi-gcc -Os -march=armv7-a -std=c99 -marm -fpic -Wall -fno-common -fno-builtin -ffreestanding -nostdinc -nostdlib -fno-strict-aliasing -mno-thumb-interwork -fno-stack-protector -fno-toplevel-reorder -Wstrict-prototypes -Wno-format-nonliteral -Wno-format-security -c test.c -o test.o
arm-none-eabi-ld -T test.lds -M -o test.elf test.o
arm-none-eabi-objdump -D test.elf > test.asm
arm-none-eabi-objcopy -O binary test.elf test.bin
mksunxiboot.exe test.bin test-sd.bin Для создания загрузочного образа использую программу с аргументами: mksunxiboot.exe test.bin test-sd.bin С помощью дискового редактора копирую весь образ на 16-й сектор карты памяти (это смещение 8кБ от начала). Карта памяти отформатирована в винде. Первые сектора - ДОСовский загрузчик-заглушка . Из ассемблерного листинга видно что программа идет с адреса 0, как требуется в A13. Хедер вроде тоже с верной контрольной суммой. Стек инитится BROM-ом (при старте) SP=0x7FF8 Вставляю карту в одладочную плату, подаю питание (внешний БП 6V 2A) - и ничего не горит. Пожалуйста, помогите разобраться, чего не хватает и что не так? Весь проект прилагаю, мейк-файлы, скрипты и утилиты там же.
src.zip ( 21.23 килобайт )
Кол-во скачиваний: 17P.S. Звонил светодиод и ножку контроллера - контакт есть, диод зажигается от тестера. Объявил переменные volatile, не помогло: CODE void main(void) { volatile int i; volatile int j; volatile int foo;
volatile uint32_t *portGConfig; volatile uint32_t *portGData; volatile uint32_t *APB0Gating;
//setup pointers for registers portGConfig = (volatile uint32_t *)(ALLWINNER_GPIO_G + Port_CFG1); portGData = (volatile uint32_t *)(ALLWINNER_GPIO_G + Port_DAT); APB0Gating = (volatile uint32_t *)(Def_APB0_Gating);
//enable clocking for GPIO *APB0Gating |= 0x0020; //configure port G pin 9 to output *portGConfig |= 0x10; //set output to on *portGData |= 0x0200;
Loop:
foo = 0; for (j = 0; j < 100; j++) { //toggle output *portGData ^= 0x0200;
foo=j; for (i = 0; i < 30000000; i++) { if(i>10) { foo++; } } }
goto Loop;
}
00000000 <main>: 0: e59f3094 ldr r3, [pc, #148]; 9c <main+0x9c> 4: e24dd010 sub sp, sp, #16 8: e5932068 ldr r2, [r3, #104]; 0x68 c: e3822020 orr r2, r2, #32 10: e5832068 str r2, [r3, #104]; 0x68 14: e59328dc ldr r2, [r3, #2268]; 0x8dc 18: e3822010 orr r2, r2, #16 1c: e58328dc str r2, [r3, #2268]; 0x8dc 20: e59328e8 ldr r2, [r3, #2280]; 0x8e8 24: e3822c02 orr r2, r2, #512; 0x200 28: e58328e8 str r2, [r3, #2280]; 0x8e8 2c: e3a02000 mov r2, #0 30: e58d200c str r2, [sp, #12] 34: e58d2008 str r2, [sp, #8] 38: e59d2008 ldr r2, [sp, #8] 3c: e3520063 cmp r2, #99; 0x63 40: cafffff9 bgt 2c <main+0x2c> 44: e59328e8 ldr r2, [r3, #2280]; 0x8e8 48: e2222c02 eor r2, r2, #512; 0x200 4c: e58328e8 str r2, [r3, #2280]; 0x8e8 50: e59d2008 ldr r2, [sp, #8] 54: e58d200c str r2, [sp, #12] 58: e3a02000 mov r2, #0 5c: e58d2004 str r2, [sp, #4] 60: e59d1004 ldr r1, [sp, #4] 64: e59f2034 ldr r2, [pc, #52]; a0 <main+0xa0> 68: e1510002 cmp r1, r2 6c: ca000007 bgt 90 <main+0x90> 70: e59d2004 ldr r2, [sp, #4] 74: e352000a cmp r2, #10 78: c59d200c ldrgt r2, [sp, #12] 7c: c2822001 addgt r2, r2, #1 80: c58d200c strgt r2, [sp, #12] 84: e59d2004 ldr r2, [sp, #4] 88: e2822001 add r2, r2, #1 8c: eafffff2 b 5c <main+0x5c> 90: e59d2008 ldr r2, [sp, #8] 94: e2822001 add r2, r2, #1 98: eaffffe5 b 34 <main+0x34> 9c: 01c20000 biceq r0, r2, r0 a0: 01c9c37f biceq ip, r9, pc, ror r3
Сообщение отредактировал IgorKossak - Mar 30 2018, 14:33
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
|
|
|
|
|
 |
Ответов
|
Mar 30 2018, 14:24
|

Местный
  
Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126

|
может быть проблема в этом: Код sudo dd if=bin/release.bin of=/dev/sdb bs=1024 seek=8 И почему bs=1024, когда сектор карты 512 байт? И что мне вместо sudo в винде использовать? Пока пишу дисковым редактором на 16-й сектор карты памяти. С uboot пока бесполезно, нету под рукой RS232 <=> UART Может всё-же проверяет карту и если там упоминание о винде(первые 2 сектора), то не грузится?
|
|
|
|
|
Mar 30 2018, 14:31
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(__inline__ @ Mar 30 2018, 17:24)  может быть проблема в этом: Код sudo dd if=bin/release.bin of=/dev/sdb bs=1024 seek=8 И почему bs=1024, когда сектор карты 512 байт? Это просто удобный способ задать смещение: 8 * 1K нагляднее, чем 16 * 512. К размеру сектора отношения не имеет. Цитата(__inline__ @ Mar 30 2018, 17:24)  С uboot пока бесполезно, нету под рукой RS232 <=> UART Надо завести, без UART никак. Цитата(__inline__ @ Mar 30 2018, 17:24)  Может всё-же проверяет карту и если там упоминание о винде(первые 2 сектора), то не грузится? Содержимое первых секторов ему безразлично.
|
|
|
|
|
Mar 30 2018, 20:11
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(aaarrr @ Mar 30 2018, 17:31)  Содержимое первых секторов ему безразлично. Первые сектора резервируются под бут рекорд, например, если используете сд карту как загрузчик и ФС одновременно. Цитата(__inline__ @ Mar 30 2018, 16:15)  Начал осваивать Allwinner A13 и пока безуспешно. Использую отладочную плату "A13-olinuxino", загрузиться хочу с SD карты (4 ГБ класс скорости 4). Не дадите ссылочки на компиляторы, ИДЕ и пр. инструменты, которые используете, тоже попробовать хочется, но с настройками гнушных программ туговато
|
|
|
|
|
Mar 31 2018, 12:24
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(mantech @ Mar 30 2018, 23:11)  Не дадите ссылочки на компиляторы, ИДЕ и пр. инструменты, которые используете, тоже попробовать хочется, но с настройками гнушных программ туговато  страничка от олимекса подойдет? https://www.olimex.com/wiki/Bare_Metal_programming_A13там вроде пошагово расписано, чего и как ставить.. кстати, и для проблемы ТС есть абзац: Код GPIO issue The above code works but the LED only turns on if printf is used. This appears to be caused by compiling optimization. Not sure how to fix this with the u boot make files however the make file in the following section has optimization turned down to allow the GPIO setting to not be compiled out. я бы попробовал вместо -Os написать -O0
|
|
|
|
|
Mar 31 2018, 13:17
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Jury093 @ Mar 31 2018, 15:24)  страничка от олимекса подойдет? https://www.olimex.com/wiki/Bare_Metal_programming_A13там вроде пошагово расписано, чего и как ставить.. кстати, и для проблемы ТС есть абзац: Код GPIO issue The above code works but the LED only turns on if printf is used. This appears to be caused by compiling optimization. Not sure how to fix this with the u boot make files however the make file in the following section has optimization turned down to allow the GPIO setting to not be compiled out. я бы попробовал вместо -Os написать -O0 Ну не фанат я линукса, почему и спрашиваю, что под винду надобно... На счет -Оs - тут правда, раз на такую засаду еще на АВРках напоролся... Цитата(__inline__ @ Mar 31 2018, 14:06)  Могут ли быть проблемы с SD-картой? У меня SDmicro 4GB с классом 4.
Просто складывается впечатление, что приобрёл кирпичи, в Терраэлектронике, кстати, брал обе платы (Olinuxino и SOM) - напаяно дерьмовым образом - куча флюса оставлено и контроллер криво запаян как будто дрожащей рукой кто-то паял (неровности на контактах) На счет сд карты - такие карты должны работать, если сама карта живая, конечно, как-то на планшете перешивал тоже 4 гига. В таком случае надо было покупать вместе с линукс-картой олимекса, она там за несколько евро продается, и сразу можно было проверить кирпич или нет...
|
|
|
|
Сообщений в этой теме
__inline__ Alwinner A13 не стартует с SD-карты Mar 30 2018, 13:15 aaarrr Попробуйте сначала этот бинарник из-под u-boot... Mar 30 2018, 13:40    aaarrr Цитата(Jury093 @ Mar 31 2018, 15:24) кста... Mar 31 2018, 12:32      Jury093 Цитата(aaarrr @ Mar 31 2018, 16:23) Госп... Mar 31 2018, 13:30       aaarrr Цитата(Jury093 @ Mar 31 2018, 16:30) ну в... Mar 31 2018, 13:35      mantech Цитата(aaarrr @ Mar 31 2018, 16:23) Госп... Mar 31 2018, 14:27       aaarrr Цитата(mantech @ Mar 31 2018, 17:27) я на... Mar 31 2018, 15:26 __inline__ Ещё один момент: на отладочной плате A13-Olinuxin... Mar 30 2018, 15:03 aaarrr Allwinner'ы грузятся с нулевой SD карты при лю... Mar 30 2018, 15:08 __inline__ Цитата(aaarrr @ Mar 30 2018, 16:08) Allwi... Mar 31 2018, 05:01 __inline__ Взял spl и u-boot отсюдова: http://dl.linux-sunxi.... Mar 31 2018, 06:50 Jury093 Цитата(__inline__ @ Mar 31 2018, 09:50) С... Mar 31 2018, 08:35 __inline__ Я много вариантов перепробовал: и с мигающим диодо... Mar 31 2018, 11:06 aaarrr Цитата(__inline__ @ Mar 31 2018, 14:06) Н... Mar 31 2018, 11:59 __inline__ На счёт соединения с ком-портом, адаптер вызвонил ... Mar 31 2018, 14:09 aaarrr Цитата(__inline__ @ Mar 31 2018, 17:05) П... Mar 31 2018, 14:10 aaarrr Цитата(__inline__ @ Mar 31 2018, 17:09) Е... Mar 31 2018, 14:21  __inline__ Цитата(aaarrr @ Mar 31 2018, 15:21) volat... Mar 31 2018, 14:31 Jury093 Цитата(__inline__ @ Mar 31 2018, 17:09) С... Mar 31 2018, 15:14  mantech Цитата(Jury093 @ Mar 31 2018, 18:14) возь... Mar 31 2018, 16:32   aaarrr Цитата(mantech @ Mar 31 2018, 19:32) Кста... Mar 31 2018, 16:46    mantech Цитата(aaarrr @ Mar 31 2018, 19:46) Видим... Mar 31 2018, 17:10   Jury093 Цитата(mantech @ Mar 31 2018, 19:32) Кста... Mar 31 2018, 17:29 __inline__ В общем что это http://radiokot.ru/articles/59/
чт... Mar 31 2018, 14:14 __inline__ Вот такой адаптер (MAX3232
) Mar 31 2018, 14:24 aaarrr Цитата(__inline__ @ Mar 31 2018, 17:09) Д... Mar 31 2018, 14:29 __inline__ Спасибо всем кто хотел помочь и помог!
Удало... Apr 1 2018, 08:36 Jury093 Цитата(__inline__ @ Apr 1 2018, 11:36) Сп... Apr 1 2018, 10:30  aaarrr Цитата(Jury093 @ Apr 1 2018, 13:30) там п... Apr 1 2018, 11:08   Jury093 Цитата(aaarrr @ Apr 1 2018, 14:08) Просто... Apr 1 2018, 15:39    aaarrr Цитата(Jury093 @ Apr 1 2018, 18:39) карто... Apr 1 2018, 15:51  mantech Цитата(Jury093 @ Apr 1 2018, 13:30) поищи... Apr 1 2018, 13:43   aaarrr Цитата(mantech @ Apr 1 2018, 16:43) Т.е. ... Apr 1 2018, 14:12    mantech Цитата(aaarrr @ Apr 1 2018, 17:12) В конс... Apr 1 2018, 14:49 mantech Цитата(__inline__ @ Apr 1 2018, 11:36) Ка... Jul 23 2018, 11:55 Obam В маркировке MAX-а смущает "+": вот не п... Apr 1 2018, 10:44 __inline__ Всем спасибо за помощь!
Цитата(mantech)Я пр... Apr 1 2018, 16:22 aaarrr Цитата(__inline__ @ Apr 1 2018, 19:22) Ка... Apr 1 2018, 16:33 aaarrr Цитата(__inline__ @ Apr 1 2018, 19:22) 2)... Apr 1 2018, 17:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|