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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Alwinner A13 не стартует с SD-карты, Отладочная плата A13-olinuxino
aaarrr
сообщение Mar 31 2018, 13:23
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mantech @ Mar 31 2018, 16:17) *
На счет -Оs - тут правда, раз на такую засаду еще на АВРках напоролся...

wacko.gif Господа, вы меня поражаете! Ну как можно лечить криво написанную программу опциями оптимизации?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 13:30
Сообщение #17


Знающий
****

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



Цитата(aaarrr @ Mar 31 2018, 16:23) *
wacko.gif Господа, вы меня поражаете! Ну как можно лечить криво написанную программу опциями оптимизации?

ну вот приходится телепатически лечить гланды по интернету sm.gif
у ТС из диагностических тулзов штатный светодиод и неработающий адаптер консоли, что там за плата, кто сделал, как работает заводская сборка софта, как ТС что-то там заливает с разных сайтов неведомо..
приходится давать шаманские советы, авось что-нить срастется
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2018, 13:35
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Вообще-то ТС листинг выложил, в котором все замечательно видно.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 14:09
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 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
aaarrr
сообщение Mar 31 2018, 14:10
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(__inline__ @ Mar 31 2018, 17:05) *
Проверьте пожалуйста -верно ли подключено?

Нет, на адаптере TXD обозначает его выход, а RXD его вход. На плате так же. Соединять надо RXD-TXD.
Можете проверить мультиметром - замыкание на землю переживет.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 14:14
Сообщение #21


Местный
***

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



В общем что это http://radiokot.ru/articles/59/
что это: https://www.olimex.com/wiki/Bare_Metal_programming_A13 - нерабочий говнокод. Во втором понятно, почему не работает
, а на счёт первого у меня догадки: сигнатура с хедером там дают смещение кода на не кратный 4-м адрес - такое в ARM работать не должно вообще.

Складывается впечатление, что те кто писал обе статьи - просто мудаки, которые пишут о том, что не работает.

Цитата(aaarrr @ Mar 31 2018, 15:10) *
Нет, на адаптере TXD обозначает его выход, а RXD его вход. На плате так же. Соединять надо RXD-TXD.
Можете проверить мультиметром - замыкание на землю переживет.

Но это не стыкуется с распиновкой MAX3232 ! вашем варианте сигнал пойдёт к выходу буфера, и выйдет из входа, что ошибка.

Но всёравно попробовал поменять TXD на RXD и наоборот - результата не дало. Пробовал на UART 1 и 0.
На SD карте SPL и U-Boot.

Сообщение отредактировал __inline__ - Mar 31 2018, 14:19
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2018, 14:21
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(__inline__ @ Mar 31 2018, 17:09) *
Ещё такая вещь, делаю LDR R0, #0x1C80082E - ассемблер делает: LDR R0, [PC, #0x20] - константу берет из памяти со смещением. Позже узнал, что ARM не может присваивать слово с ненулевыми байтами сразу.Это - жесть.

Во-первых умеет, во-вторых загрузка через смещение относительно PC как раз и дает PIC, так что это -
Цитата(__inline__ @ Mar 31 2018, 17:09) *
Уже сделал через ORR, чтоб исключить стек и память, и -fPIC поставил, чтобы перестраховаться от того, что если код будет загружен не в 0x0 а в другие адреса.

- совершенно лишние меры.

Цитата(__inline__ @ Mar 31 2018, 17:09) *
Жесть! Но думаю, что это из-за криворукости того кто написал программу - там нет волатайлов ))) от туда и брал вначале этот говнокод

Там все несколько хитрее:
Цитата
//set these to volatile to ensure actions on them aren't compiled out
volatile uint32_t *portGConfig;
volatile uint32_t *portGData;

//setup pointers for GPIO registers
portGConfig = (uint32_t *)(ALLWINNER_GPIO_G + Port_CFG1);
portGData = (uint32_t *)(ALLWINNER_GPIO_G + Port_DAT);

volatile "потеряли" по дороге.

Цитата(__inline__ @ Mar 31 2018, 17:14) *
Но это не стыкуется с распиновкой MAX3232 ! вашем варианте сигнал пойдёт к выходу буфера, и выйдет из входа, что ошибка.

Пардон, на распиновку не обратил внимания - думал, снаружи смотрите. Тогда вроде правильно.

Цитата(__inline__ @ Mar 31 2018, 17:14) *
Но всёравно попробовал поменять TXD на RXD и наоборот - результата не дало. Пробовал на UART 1 и 0.
На SD карте SPL и U-Boot.

Возьмите какой-нибудь образ целой карты под A13, и закатайте его через win32diskimager.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 14:24
Сообщение #23


Местный
***

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



Вот такой адаптер (MAX3232
Прикрепленное изображение)
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 31 2018, 14:27
Сообщение #24


Гуру
******

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



Цитата(aaarrr @ Mar 31 2018, 16:23) *
wacko.gif Господа, вы меня поражаете! Ну как можно лечить криво написанную программу опциями оптимизации?

Прога портировалась с ИАРа, в котором все работало и не ругалось, при переносе на гцц с опцией -Os работать перестало, причем без всякой ругани, так что пусть уж эти создатели компиляторов там сами разберутся, что в их понимании "криво", а что "прямо",а я на совершенство и не претендую laughing.gif

Сообщение отредактировал mantech - Mar 31 2018, 14:28
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2018, 14:29
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(__inline__ @ Mar 31 2018, 17:09) *
Для у-бута нужен UART1 ? Или UART 0 ?

UART1. Об этом и в инструкции к вашей плате написано.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 14:31
Сообщение #26


Местный
***

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



Цитата(aaarrr @ Mar 31 2018, 15:21) *
volatile "потеряли" по дороге.


sm.gif Да я уже переписал его, ещё там в дефайнах скобки нужно добавить и комментарии возле дефайнов заменить на /* */ вместо //, иначе что-то может закоментиться sm.gif

Этот вариант должен работать , но не работает (вставка хедера сделана, проверил в дизассемблере и в бинарнике - прыгает куда надо):
CODE

#define uint32_t unsigned long int

#define CCMBase 0x01C20000 /* clock module */

#define Def_APB0_Gating (CCMBase + 0x68)

#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

/* A workaround for https://patchwork.ozlabs.org/patch/622173 */
void __attribute__((section(".start"))) __attribute__((naked)) start(void)
{
__asm__ __volatile__ (".long 0xEA00000A \n" // jump main()
".long 0x4E4F4765 \n" // eGON
".long 0x3054422E \n" // .BT0
".long 0x00000000 \n" // checksum
".long 0x00001000 \n" // 4kB size
".long 0x00000000 \n" // header size!
".long 0x00000000 \n"
".long 0x00000000 \n"
".long 0x00000000 \n"
".long 0x00000000 \n"
".long 0x00000000 \n"
".long 0x00000000 \n");
/*
u32, Jump to address
8 * u8, Magic "eGON.BT0" (no \n)
32u, checksum for boot0
32u, length for boot0
32u, header size of boot0
4 * u8, header version
4 * u8, Boot_vsn
4 * u8, eGON_vsn
8 * u8, platform information
*/
}

void main(void)
{

volatile uint32_t *APB0Gating;
volatile uint32_t *portGConfig;
volatile uint32_t *portGData;

//setup pointers for registers

APB0Gating = (volatile uint32_t*)(Def_APB0_Gating);
portGConfig = (volatile uint32_t*)(ALLWINNER_GPIO_G+Port_CFG1);
portGData = (volatile uint32_t*)(ALLWINNER_GPIO_G+Port_DAT);


//enable clocking for GPIO

*APB0Gating|=0x0020;

//configure port G pin 9 to output

*portGConfig|=0x10;

//set output to on:

*portGData|=0x0200;

Loop:

goto Loop;
}

Код
Disassembly of section .start:

00000000 <start>:
   0:    ea00000a     b    30 <main>
   4:    4e4f4765     cdpmi    7, 4, cr4, cr15, cr5, {3}
   8:    3054422e     subscc    r4, r4, lr, lsr #4
   c:    00000000     andeq    r0, r0, r0
  10:    00001000     andeq    r1, r0, r0
    ...

Disassembly of section .text:

00000030 <main>:
  30:    e3a03000     mov    r3, #0
  34:    e34031c2     movt    r3, #450; 0x1c2
  38:    e5932068     ldr    r2, [r3, #104]; 0x68
  3c:    e3822020     orr    r2, r2, #32
  40:    e5832068     str    r2, [r3, #104]; 0x68
  44:    e59328dc     ldr    r2, [r3, #2268]; 0x8dc
  48:    e3822010     orr    r2, r2, #16
  4c:    e58328dc     str    r2, [r3, #2268]; 0x8dc
  50:    e59328e8     ldr    r2, [r3, #2280]; 0x8e8
  54:    e3822c02     orr    r2, r2, #512; 0x200
  58:    e58328e8     str    r2, [r3, #2280]; 0x8e8
  5c:    eafffffe     b    5c <main+0x2c>




Контрольную сумму в хедере вычисляю утилитой с гитхаба (её тоже собрать самому пришлось!)


Цитата(aaarrr @ Mar 31 2018, 15:21) *
Возьмите какой-нибудь образ целой карты под A13, и закатайте его через win32diskimager.


Завтра попробую закатать образ на другую карту (надо сбегать и купить её)
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 15:14
Сообщение #27


Знающий
****

Группа: Участник
Сообщений: 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
aaarrr
сообщение Mar 31 2018, 15:26
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mantech @ Mar 31 2018, 17:27) *
я на совершенство и не претендую laughing.gif

Так если бы совершенство, а то классическая ошибка sad.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 31 2018, 16:32
Сообщение #29


Гуру
******

Группа: Участник
Сообщений: 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
aaarrr
сообщение Mar 31 2018, 16:46
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Видимо, производители планшетов на A13 взяли образ из одного источника (что и не удивляет),
а его сборщик почему-то решил "буковки" выключить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 11:07
Рейтинг@Mail.ru


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