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

 
 
> Alwinner A13 не стартует с SD-карты, Отладочная плата A13-olinuxino
__inline__
сообщение Mar 30 2018, 13:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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 килобайт ) Кол-во скачиваний: 17


P.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]-для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
__inline__
сообщение Mar 31 2018, 14:09
Сообщение #2


Местный
***

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



На счёт соединения с ком-портом, адаптер вызвонил весь - картинка ниже.

Правда непонтно, что на Olinuxino-A13 плате имелось ввиду под TX и RX - это по отношению к кому и от кого???

Проверьте пожалуйста -верно ли подключено?

Для у-бута нужен UART1 ? Или UART 0 ?
Прикрепленное изображение


Цитата(aaarrr @ Mar 31 2018, 13:32) *
Все проблемы и так видны в листинге. Первый вариант - "без volatile" - неработоспособен, второй на вид должен работать.

Это так на форуме Олимекса было написано. Уже давно исправил регистры на VOLATILE и проверил в листинге.

Ещё такая вещь, делаю LDR R0, #0x1C80082E - ассемблер делает: LDR R0, [PC, #0x20] - константу берет из памяти со смещением. Позже узнал, что ARM не может присваивать слово с ненулевыми байтами сразу.Это - жесть.
Уже сделал через ORR, чтоб исключить стек и память, и -fPIC поставил, чтобы перестраховаться от того, что если код будет загружен не в 0x0 а в другие адреса.

Уже до написания на ассемблере дошло, не идёт всёравно:
CODE

.long 0xEA00000A
.long 0x4E4F4765
.long 0x3054422E
.long 0x00000000
.long 0x00001000
.long 0x00000000
.long 0x00000000
.long 0x00000000
.long 0x00000000
.long 0x00000000
.long 0x00000000
.long 0x00000000

mov r0, #0x01000000
orr r0,r0,#0x00C20000
orr r0,r0,#0x00000068
ldr r0,[r0]
orr r0,r0, #0x0020
mov r1, #0x01000000
orr r1,r1,#0x00C20000
orr r1,r1,#0x00000068
str r0,[r1]

mov r0, #0x01000000
orr r0,r0,#0x00C20000
orr r0,r0,#0x00000800
orr r0,r0,#0x000000D8
ldr r0,[r0]
orr r0,r0, #0x0010
mov r1, #0x01000000
orr r1,r1,#0x00C20000
orr r1,r1,#0x00000800
orr r1,r1,#0x000000D8
str r0,[r1]

mov r0, #0x01000000
orr r0,r0,#0x00C20000
orr r0,r0,#0x00000800
orr r0,r0,#0x000000E8
ldr r0,[r0]
orr r0,r0, #0x0200
mov r1, #0x01000000
orr r1,r1,#0x00C20000
orr r1,r1,#0x00000800
orr r1,r1,#0x000000E8
str r0,[r1]


хотя теоретически должно...

Скачал A13_debian_34_90_mainline_u-boot_release_11_3.img , но он не лезет на 4 Гб SD карту. Складывается впечатление, что дело в карте.

Цитата(Jury093 @ Mar 31 2018, 13:24) *
кстати, и для проблемы ТС есть абзац:
Код
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

Жесть! Но думаю, что это из-за криворукости того кто написал программу - там нет волатайлов ))) от туда и брал вначале этот говнокод

Цитата(Jury093 @ Mar 31 2018, 14:30) *
ну вот приходится телепатически лечить гланды по интернету sm.gif
заливает с разных сайтов неведомо..
приходится давать шаманские советы, авось что-нить срастется

Я чётко и ясно писал названия дистров, бинарников и образов. Некоторые (последние) были скачаны с сайта Олимекса. А вот почему в железе оно не работает - очень непонятно.

Сообщение отредактировал __inline__ - Mar 31 2018, 13:45
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 15:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(__inline__ @ Mar 31 2018, 17:09) *
Скачал A13_debian_34_90_mainline_u-boot_release_11_3.img , но он не лезет на 4 Гб SD карту. Складывается впечатление, что дело в карте.

любопытно будет послушать, как вы писали образ?
на странице софта написано:
Код
Note: the A13-OLinuXino-SD card which we have on our webshop contain same image on 4GB Class10 fast micro sd-card, if you want to use this image please use Class10 fast card or the performance of Linux will slow down

что наводит на мысль, что олимексовцы и их клиенты поголовно жопоруки, а вы нет..

возьмите тот образ, который "не лезет", отрежьте от него первые 10 МБайт и залейте на свою uSD карточку с 0 сектора в режиме RAW - если все исправно, то в терминалке побегут буковки

и проверьте исправность сериального адаптера: подключите к нему gnd и +3в3, а контакты RX и TX на адаптере замкните между собой. на компе в терминалке должны увидеть "эхо" на нажатие любых клавиш. если эха нет, то адаптер в помойку

кстати, что у вас между этим адаптером и компом? чисто провода или usb-serial? там тоже можно перекрестить сигналы, а также промахнуться портом (если на usb)
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 31 2018, 16:32
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Jury093 @ Mar 31 2018, 18:14) *
возьмите тот образ, который "не лезет", отрежьте от него первые 10 МБайт и залейте на свою uSD карточку с 0 сектора в режиме RAW - если все исправно, то в терминалке побегут буковки

и проверьте исправность сериального адаптера: подключите к нему gnd и +3в3, а контакты RX и TX на адаптере замкните между собой. на компе в терминалке должны увидеть "эхо" на нажатие любых клавиш. если эха нет, то адаптер в помойку

кстати, что у вас между этим адаптером и компом? чисто провода или usb-serial? там тоже можно перекрестить сигналы, а также промахнуться портом (если на usb)


Кстати, интересное дело как-то было, попалось 2 планшета на А13 и 1 на А10, понятно, что андроид на них, но бут-то все равно похожий на линуксовый, так вот, у А13 буковок не было ни на одном уарте, у а10 все по правилам и загрузка бут0 и бут1... Интерерсно, почему так?

По поводу сериального адаптера.. Ну если ТС не проделал все это - ему минус, ибо проверить TX с RX - дело само собой разумеющееся laughing.gif

Цитата(aaarrr @ Mar 31 2018, 18:26) *
Так если бы совершенство, а то классическая ошибка sad.gif

Не буду спорить, но дело такое было, поэтому и написал... К тому же, при отладке незнакомой платформы и непонятному поведению проги вообще, всегда отключаю оптимизацию, после того, как все заработало, можно и включать, ибо уже понятно, что если снова не заработает, то сам накосячил...

Сообщение отредактировал mantech - Mar 31 2018, 16:34
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 17:29
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(mantech @ Mar 31 2018, 19:32) *
Кстати, интересное дело как-то было, попалось 2 планшета на А13 и 1 на А10, понятно, что андроид на них, но бут-то все равно похожий на линуксовый, так вот, у А13 буковок не было ни на одном уарте, у а10 все по правилам и загрузка бут0 и бут1... Интерерсно, почему так?

как справедливо сказали выше, черпают с одной бочки и тюнингуют под свои вкусы или корпоративные стандарты. просто заглушили выхлоп либо выключив порт, или переопределили под тот, на каком отлаживались и не факт, что это uart0/1
такая фишка полезна от всяких кулхацкеров, которые потом ломают прошивки
у меня валяется подаренный под разборку сетевой медиаплейер (вроде на броадкоме), припаял консоль и буковки вижу, но остановить не могу - запрещено опцией в юбуте. а т.к. проц защищен цифровой подписью, то ломать бессмысленно

Цитата
По поводу сериального адаптера.. Ну если ТС не проделал все это - ему минус, ибо проверить TX с RX - дело само собой разумеющееся laughing.gif

кому очевидно, кому не очень. у меня нет полной информации о том, что у ТС, вот и приходится тыкать в критичные места..

Цитата
Не буду спорить, но дело такое было, поэтому и написал... К тому же, при отладке незнакомой платформы и непонятному поведению проги вообще, всегда отключаю оптимизацию, после того, как все заработало, можно и включать, ибо уже понятно, что если снова не заработает, то сам накосячил...

ага, я тоже пару раз наступал

Цитата(mantech @ Mar 31 2018, 20:10) *
Я просто к тому, что может и тс поэтому их не видит тоже rolleyes.gif

врядли - это отладочные прошивки, а не коммерческие
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- __inline__   Alwinner A13 не стартует с SD-карты   Mar 30 2018, 13:15
- - aaarrr   Попробуйте сначала этот бинарник из-под u-boot...   Mar 30 2018, 13:40
- - __inline__   может быть проблема в этом: Кодsudo dd if=bin/rele...   Mar 30 2018, 14:24
|- - aaarrr   Цитата(__inline__ @ Mar 30 2018, 17:24) м...   Mar 30 2018, 14:31
|- - mantech   Цитата(aaarrr @ Mar 30 2018, 17:31) Содер...   Mar 30 2018, 20:11
|- - Jury093   Цитата(mantech @ Mar 30 2018, 23:11) Не д...   Mar 31 2018, 12:24
|- - aaarrr   Цитата(Jury093 @ Mar 31 2018, 15:24) кста...   Mar 31 2018, 12:32
|- - mantech   Цитата(Jury093 @ Mar 31 2018, 15:24) стра...   Mar 31 2018, 13:17
|- - aaarrr   Цитата(mantech @ Mar 31 2018, 16:17) На с...   Mar 31 2018, 13:23
|- - 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
|- - 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
|- - aaarrr   Цитата(mantech @ Mar 31 2018, 19:32) Кста...   Mar 31 2018, 16:46
||- - mantech   Цитата(aaarrr @ Mar 31 2018, 19:46) Видим...   Mar 31 2018, 17:10
- - __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


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 17:44
Рейтинг@Mail.ru


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