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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> 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
aaarrr
сообщение Mar 30 2018, 13:40
Сообщение #2


Гуру
******

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



Попробуйте сначала этот бинарник из-под u-boot'а запустить с любого адреса. Версию с volatile, конечно, т.к. первый вариант ничем мигать не может точно.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 30 2018, 14:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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 сектора), то не грузится?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 30 2018, 14:31
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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 сектора), то не грузится?

Содержимое первых секторов ему безразлично.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 30 2018, 15:03
Сообщение #5


Местный
***

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



Ещё один момент: на отладочной плате A13-Olinuxino не установлена NAND-Flash микросхема, и перемычка (SMD) замкнута: NCE_NAND_E - это Chip Enable как я понимаю. Может процессор пытается с неё загрузиться и перемычку надо разомкнуть, чтоб с SD карты пошла загрузка? Если да, прийдётся скальпелем резать потому что перемычка замкнута печатным проводником, а не резистором
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 30 2018, 15:08
Сообщение #6


Гуру
******

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



Allwinner'ы грузятся с нулевой SD карты при любых условиях, она первая в списке загрузки.
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 30 2018, 20:11
Сообщение #7


Гуру
******

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


Не дадите ссылочки на компиляторы, ИДЕ и пр. инструменты, которые используете, тоже попробовать хочется, но с настройками гнушных программ туговато crying.gif
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 05:01
Сообщение #8


Местный
***

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



Цитата(aaarrr @ Mar 30 2018, 16:08) *
Allwinner'ы грузятся с нулевой SD карты при любых условиях, она первая в списке загрузки.

Приобрёл адаптер RS232 <>UART.

К какому UART цепляться к UART1 или UART0 ? На линиях UART0 сидит карта SD - конфликт?
Формат данных: 115200, 8 , N, 1?

Для убута надо: u-boot-sunxi-with-spl.bin или 2 файла: sunxi-spl.bin и u-boot.img - бинарников не нашёл, только огромный tar.gz который надо самому собирать и компилить.

Поделитесь плиз SPL и U-Boot-ом для A13 пожалуйста.
А то чувствую себя застрявшим уже 2й день..

Сообщение отредактировал __inline__ - Mar 31 2018, 05:02
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 06:50
Сообщение #9


Местный
***

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



Взял spl и u-boot отсюдова: http://dl.linux-sunxi.org/users/amery/sunxi-3.0/latest/
Архив: a13_olinuxino_hwpack.tar.xz

Закатал spl с 16-го сектор а карты, u-boot с 64-го сектора.

Скачал терминалку, при включенни питания на плату, валят несколько нулей, причем независимо от того стоит SD карта или нет. Если что-то послать, в ответ идут снова нули.
Подключился к UART1.

Соединение прямое: TX allwinner => TX адаптера RS232-UART, RX alwinner => RX адаптера. Питание 3,3V с платы на адаптер, GND вместе.

Бред идёт какой-то в общем:
WinXP, в биосе порт включен (COM1 0x2F8)

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 08:35
Сообщение #10


Знающий
****

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



Цитата(__inline__ @ Mar 31 2018, 09:50) *
Соединение прямое: TX allwinner => TX адаптера RS232-UART, RX alwinner => RX адаптера. Питание 3,3V с платы на адаптер, GND вместе.

обычно практикуется RX оборудования на TX адаптера и наоборот

а вы в архив "только огромный tar.gz" заглядывали? может там есть готовые бинарники?

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

и еще, к вашей плате должен быть набор бинарников (ищите у производителя), накидайте на SD и запускайте с адаптером, буковки побегут, будете двигаться дальше..
Go to the top of the page
 
+Quote Post
__inline__
сообщение Mar 31 2018, 11:06
Сообщение #11


Местный
***

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



Я много вариантов перепробовал: и с мигающим диодом и не с мигающим. Ничего не работает.

И ссылку давал постом выше на тот Spl и u-boot, там ясно написано что он для olinuxino-A13. Заливал и SPL и U-boot - результат один - ничерта ничего не работает.

А те нули которые в терминале - разобрался, это наводка по воздуху, что доказывает, что UART1 не заводится, значит с SD-карты u-boot не грузится.

Много перепробовал готовых образов - ничего вообще не запускается и в терминале не бежит.

Пробовал ещё это:
http://radiokot.ru/articles/59/
там готовый бинарник есть, он тоже не пошёл.

Всё тоже самое пробовал на другой отладке - A13-SOM - результат такой же (точнее -без результата).

Могут ли быть проблемы с SD-картой? У меня SDmicro 4GB с классом 4.

Просто складывается впечатление, что приобрёл кирпичи, в Терраэлектронике, кстати, брал обе платы (Olinuxino и SOM) - напаяно дерьмовым образом - куча флюса оставлено и контроллер криво запаян как будто дрожащей рукой кто-то паял (неровности на контактах)

Никто не ковырял Alwinner-ы ? Мне одному выпала такая участь?

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


Гуру
******

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



Цитата(__inline__ @ Mar 31 2018, 14:06) *
Никто не ковырял Alwinner-ы ? Мне одному выпала такая участь?

И "ковыряли" и свои изделия проектировали.

Это -
Цитата(Jury093 @ Mar 31 2018, 11:35) *
обычно практикуется RX оборудования на TX адаптера и наоборот

проверили?
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 12:24
Сообщение #13


Знающий
****

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



Цитата(mantech @ Mar 30 2018, 23:11) *
Не дадите ссылочки на компиляторы, ИДЕ и пр. инструменты, которые используете, тоже попробовать хочется, но с настройками гнушных программ туговато crying.gif

страничка от олимекса подойдет?
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
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 31 2018, 12:32
Сообщение #14


Гуру
******

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



Цитата(Jury093 @ Mar 31 2018, 15:24) *
кстати, и для проблемы ТС есть абзац

Все проблемы и так видны в листинге. Первый вариант - "без volatile" - неработоспособен, второй на вид должен работать.
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 31 2018, 13:17
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 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 гига.

В таком случае надо было покупать вместе с линукс-картой олимекса, она там за несколько евро продается, и сразу можно было проверить кирпич или нет...
Go to the top of the page
 
+Quote Post
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
mantech
сообщение Mar 31 2018, 17:10
Сообщение #31


Гуру
******

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



Цитата(aaarrr @ Mar 31 2018, 19:46) *
Видимо, производители планшетов на A13 взяли образ из одного источника (что и не удивляет),
а его сборщик почему-то решил "буковки" выключить.

Я просто к тому, что может и тс поэтому их не видит тоже rolleyes.gif
Go to the top of the page
 
+Quote Post
Jury093
сообщение Mar 31 2018, 17:29
Сообщение #32


Знающий
****

Группа: Участник
Сообщений: 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__
сообщение Apr 1 2018, 08:36
Сообщение #33


Местный
***

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



Спасибо всем кто хотел помочь и помог! 1111493779.gif
Удалось запустить плату с A13 ! rolleyes.gif

Было 2 ошибки.

Ошибка номер 1.

Начал с проверки COM-порта. Замкнул вывод 2 с выводом 3 на системном блоке компа, убедился как тут писали, что связь есть: получаю то же, что и отправляю.
Значит порт исправен и WinXP дает доступ к нему.

Дальше: подсоединил адаптер, запитал его от 3,3V от платы A13-Olinuxino. Выводы TX и RX адаптера соединил вместе. Вот тут и зарылась собака - в ответ летит не то, что отправляю!
Запитал адаптер отдельно от 5V, протестил: обмен исправен. Понизил питание до 3V - снова пошла лажа на скорости 115200 бит/c!.
Понизил скорость до 2400 бит/c - обмен при питании 3V нормальный.

Сделал вывод, что тот MAX3232, что стоит в адаптере не позволяет при питании 3,3V давать обмен на 115200 бит/c.
Порылся в закромах, нашёл в резерве одну MAX3232, выпаял ту что была на адаптере и впаял новую.

Проверил снова обмен при 5V и при 3.3V на скорости 115200 бит/c - работает исправно! Делаю вывод о бракованной партии микросхем MAX3232, которая попала мне в адаптере.

Фотка фуфела MAX3232, не работающего на 115200 бит/с при 3,3V:
Прикрепленное изображение

Фотка нормальной микросхемы:
Прикрепленное изображение


Ошибка номер 2.

Программа дискового редактора, которую я использовал: HxD Hex-редактор от Maёl Horz, неверно делала запись на 16-й сектор карты!
Позже, скачав win32-disk-imager-0-7-en-win.zip (эта не свежая версия, но идёт под WinXP, что для меня важно!) и записав образ sunxi-spl.bin из папки a13_olinuxino_hwpack, я получил наконец-то запуск программы на A13:
Прикрепленное изображение


Действительно, для отладки используется порт UART1. Образ sunxi-spl.bin для A13 прилагаю:
Прикрепленный файл  sunxi_spl.zip ( 11.61 килобайт ) Кол-во скачиваний: 15


ну и далее попробовал запустить Debian, тот самый, что якобы на карту с 4 ГБ влезает (на самом деле нет, олимексовцы по-мойму забыли, что 4 ГБ это не 4*1024^3 байт, а 4*1000^3 sm.gif ) всё пошло:

Прикрепленное изображение


Качал вот этот архив: A13_debian_34_90_mainline_u-boot_release_11_3.7z, с торрента - файл прикладываю:
Прикрепленный файл  A13_debian_34_90_mainline_u_boot_release_11_3.zip ( 25.23 килобайт ) Кол-во скачиваний: 13


Естественно, перед заливкой образа, архив распаковать. Образ писал программой, что описана выше: win32-disk-imager-0-7-en-win.zip

Потом всё-же решил посмотреть, где же глючит HxD и почему она пишет 16-й сектор не туда, куда надо и не видит там ничего после записи win32-disk-imager-0-7-en-win.zip.

Для этого прочёл образ с карты (1% достаточно) и увидел, что сигнатура eGON.BT0 была на 145-м секторе! Делайте выводы, господа! Вот так софтина может подставить программиста!

---

Шаг 3.

После как разобрался в ошибках, попробовал закатать образ своей программы с мигающим светодиодом.
Так как HxD - оказался на поверку говном, а win32-disk-imager не может писать образы не с начала, пришлось 0x2000 байт с самого начала SD-карты скопировать в отдельный файл.
Затем бинарно клеить эти 0x2000 байт со своей программой (у которой уже есть хедер и посчитана контрольная сумма).

Тоесть алгоритм такой:

1) компилируем и линкуем свою программу (при этом моделируя набросок заголовка: прыжок на main(), заполняя оставшееся место нулями)

2) вычисляем контрольную сумму в получившемся бинарнике (я использую checksumm.exe собственноручно скомпилированную из сорцов Гитхаба)

3) склеиваем 2 файла: первые 0x2000 байт со своим бинарником (я использую свой конкатенатор concat.exe)

4) полученный файл *.img катаем на SD-карту win32-disk-imager-ом.

5) вставляем карту в A13-olinuxino, включаем питание и радуемся результату! sm.gif
Загрузка мгновенна, никаких кнопок Power и Home/U-boot жать не надо!

Прикрепляю рабочий проект целиком - оптимизация по скорости, максимальная. Проект перелопатил из олимексовского говнокода. (+ утилита для контрольной суммы):
Прикрепленный файл  A13_led.zip ( 21.39 килобайт ) Кол-во скачиваний: 13


Использую такие тулчейны:
gcc-arm-none-eabi-6-2017-q2-update-win32.exe
gcc-arm-none-eabi-4_8-2014q3-20140805-win32.exe

Без разницы какой, после инсталляции важно прописать переменные окружения в операционной системе , иначе не будет работать как надо.
Сорцы пишу в Блокноте (с синтаксической подсветкой типа "Bred"), для сборки батники или make-файлы.

По-мойму это лучше, чем искать проприетарное тяжеловесное дерьмо, за которое мудаки требуют деньги (в контексте последних ARM-ов).
И к тому же которое под WinXP идёт либо криво или вообще не пускается.


Ну и вспомогательные вещи: утилита склейки concat.exe и файл первых 0x2000 байт, которые должны быть до программы.
Утилита склеивает 2 файла : "0x2000.bin" и "spl.bin" в один "image.img" - его катать на карту win32-disk-imager-ом!
Прикрепленный файл  concat_util.zip ( 33.44 килобайт ) Кол-во скачиваний: 10


Если достать нормальный дисковый редактор, то можно сразу spl.bin катать на 16-й сектор. Без всяких склеек с 0x2000.bin.
Но пока такой программы не нашёл, все клянчат деньги и не дают работать на запись...

---

В целом я рад - началу освоения Alwinner положено!!! yeah.gif
Надеюсь, что то что написал, поможет начинающим разобраться и не спотыкаться на те грабли, что мне пришлось испытать. smile3046.gif

to mantech:
регистры, порты ввода-вывода, переменные, менющиеся в обработчиках прерываний - должны быть объявлены как volatile, иначе компилятор оставляет за собой право выкинуть часть кода или закешировать эти переменные в регистры (особенно с максимальной оптимизацией, где не учитывается специфика работы с аппаратурой: допускается многократное присваивание в один и тот же регистр) sm.gif

Сообщение отредактировал __inline__ - Apr 1 2018, 09:37
Go to the top of the page
 
+Quote Post
Jury093
сообщение Apr 1 2018, 10:30
Сообщение #34


Знающий
****

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



Цитата(__inline__ @ Apr 1 2018, 11:36) *
Спасибо всем кто хотел помочь и помог! 1111493779.gif
Удалось запустить плату с A13 ! rolleyes.gif

спасибо, что поделились результатами, кто-нить следующий придет, прочитает и обойдет подобные грабли..

по max3232 - у вас либо перемаркированная max232 или фейк от китайцев
ближайший пост:
https://www.eevblog.com/forum/reviews/fake-...tional-details/

Цитата
(на самом деле нет, олимексовцы по-мойму забыли, что 4 ГБ это не 4*1024^3 байт, а 4*1000^3 sm.gif )

там помимо олимексовцев, д.б. разозленные клиенты, которые заплатили деньги за плату, а "образ на карточку не лезет"
напишите им фидбек - "какого хрена 'ссылка' не лезет на 4ГБ", если это их косяк, то исправят

Цитата
Если достать нормальный дисковый редактор, то можно сразу spl.bin катать на 16-й сектор. Без всяких склеек с 0x2000.bin.

поищите winhex или какой-нить discedit, у того же олимекса были ссылки на дисковые редакторы

формально, можно загрузиться с uSD в дефолтный дебьян и пилить вторую карточку через usb ридер прямо на плате, но это уж как кому удобнее..
Go to the top of the page
 
+Quote Post
Obam
сообщение Apr 1 2018, 10:44
Сообщение #35


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



В маркировке MAX-а смущает "+": вот не помню, это способность большого ESD (1.5кВ)?
А если перемаркированная 232, то можно было бы увеличить ёмкости конденсаторов накопительных. В прочем, на фиг (;
С успехом вас (:


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 1 2018, 11:08
Сообщение #36


Гуру
******

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



Цитата(Jury093 @ Apr 1 2018, 13:30) *
там помимо олимексовцев, д.б. разозленные клиенты, которые заплатили деньги за плату, а "образ на карточку не лезет"
напишите им фидбек - "какого хрена 'ссылка' не лезет на 4ГБ", если это их косяк, то исправят

Просто разные 4GB карты несколько отличаются по размеру. По-хорошему, надо было файловую систему урезать до минимума
и расширять при первом включении, как делает Armbian.
Go to the top of the page
 
+Quote Post
mantech
сообщение Apr 1 2018, 13:43
Сообщение #37


Гуру
******

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



Цитата(Jury093 @ Apr 1 2018, 13:30) *
поищите winhex или какой-нить discedit, у того же олимекса были ссылки на дисковые редакторы

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


Я предлагал ТСу программу cfimager от фриски. Пишет с на сд карту свой бинарь с первого сектора и ничего изобретать не нужно... Причем, что удобно, в ней нет гуя, работает с командной строки без установки драйверов или еще чего-либо.

Цитата(Obam @ Apr 1 2018, 13:44) *
В маркировке MAX-а смущает "+": вот не помню, это способность большого ESD (1.5кВ)?
А если перемаркированная 232, то можно было бы увеличить ёмкости конденсаторов накопительных. В прочем, на фиг (;
С успехом вас (:


Неа, тут это не поможет, проверял.

Цитата(__inline__ @ Apr 1 2018, 11:36) *
Сорцы пишу в Блокноте (с синтаксической подсветкой типа "Bred"), для сборки батники или make-файлы.

По-мойму это лучше, чем искать проприетарное тяжеловесное дерьмо, за которое мудаки требуют деньги (в контексте последних ARM-ов).
И к тому же которое под WinXP идёт либо криво или вообще не пускается.


Т.е. ИДЕ не используете. А если ошибка в программе, как она отображается? В ИДЕ можно сразу на строчку с ошибкой кликнуть, ИМХО удобнее будет...

Сообщение отредактировал mantech - Apr 1 2018, 13:37
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 1 2018, 14:12
Сообщение #38


Гуру
******

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



Цитата(mantech @ Apr 1 2018, 16:43) *
Т.е. ИДЕ не используете. А если ошибка в программе, как она отображается? В ИДЕ можно сразу на строчку с ошибкой кликнуть, ИМХО удобнее будет...

В консоли, естественно. Перейти на нужную строку в нужном файле можно и без ИДЕ - обычно все и так перед глазами.
Go to the top of the page
 
+Quote Post
mantech
сообщение Apr 1 2018, 14:49
Сообщение #39


Гуру
******

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



Цитата(aaarrr @ Apr 1 2018, 17:12) *
В консоли, естественно. Перейти на нужную строку в нужном файле можно и без ИДЕ - обычно все и так перед глазами.

Не говорю, что нельзя, просто в иде удобнее, особенно, когда файлов больше сотни, а у ТСа, если он реально будет камень осваивать, будет и больше...
Go to the top of the page
 
+Quote Post
Jury093
сообщение Apr 1 2018, 15:39
Сообщение #40


Знающий
****

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



Цитата(aaarrr @ Apr 1 2018, 14:08) *
Просто разные 4GB карты несколько отличаются по размеру.

карточки разного размера могут быть в двух случаях - производитель-параноик откусил часть флеша под сейв-блоки и второй - производитель-халтурщик поставил в карточку флеш с большим кол-вом бед-блоков. других вариантов как-то в голову не приходит..
для ленивых олимекс продает готовые карточки с нарезанной осью:
https://www.olimex.com/Products/OLinuXino/A...source-hardware

Цитата
По-хорошему, надо было файловую систему урезать до минимума

не каждый сможет из комплекта бинарников сплодить рабочую систему, там обычно масса тонкостей и олимекс правильно делает, что выкладывает образы (не он первый такое практикует и это правильно), тем самым отсекает отрицательный фидбек по продукту.. опять же всегда можно взять 8ГБ карточку и на нее накатить предоставленный образ

а если "по-хорошему", то рутовая генерится стандартными средствами, хошь debian armel/hf, хошь ubuntu, чистые дистрибутивы 60-100МБ, впрочем это уже не для ветки "Микроконтроллеры (MCs)"..
ок, пожелаю ТС успехов в пилёжке..
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 1 2018, 15:51
Сообщение #41


Гуру
******

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



Цитата(Jury093 @ Apr 1 2018, 18:39) *
карточки разного размера могут быть в двух случаях - производитель-параноик откусил часть флеша под сейв-блоки и второй - производитель-халтурщик поставил в карточку флеш с большим кол-вом бед-блоков. других вариантов как-то в голову не приходит..

Да мало ли причин. В любом случае нельзя считать, что на карту с надписью "4GB" уместится 4 * 10^9 байт.

Цитата(Jury093 @ Apr 1 2018, 18:39) *
не каждый сможет из комплекта бинарников сплодить рабочую систему, там обычно масса тонкостей и олимекс правильно делает, что выкладывает образы (не он первый такое практикует и это правильно), тем самым отсекает отрицательный фидбек по продукту.. опять же всегда можно взять 8ГБ карточку и на нее накатить предоставленный образ

Под "урезать" имелось в виду убрать свободное место, а не лить тупо содержимое карты через dd.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Apr 1 2018, 16:22
Сообщение #42


Местный
***

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



Всем спасибо за помощь! a14.gif

Цитата(mantech)
Я предлагал ТСу программу cfimager от фриски. Пишет с на сд карту свой бинарь с первого сектора и ничего изобретать не нужно... Причем, что удобно, в ней нет гуя, работает с командной строки без установки драйверов или еще чего-либо.


Я вначале подумал, что она заточена только под I.MX. Теперь вижу, что она универсальна!
Нашёл её здесь: ftp://125.7.130.110/imx/5/Mfgtools-Rel-1....Utils/cfimager/

Теперь действительно стало проще лить образ без всяких дополнительных файлов и склеиваний - в батник её прописал после билда и чек-суммы, получилась сборка в 1 клик:
Код
cfimager.exe -raw -offset 0x2000 -f spl.bin -d F

где F - буква диска SD-карты

Цитата(mantech)
Т.е. ИДЕ не используете. А если ошибка в программе, как она отображается? В ИДЕ можно сразу на строчку с ошибкой кликнуть, ИМХО удобнее будет...

Когда писал под STM32, то открывал Keil исключительно для сборки проекта.
Код писал в блокноте.
В GCC ошибки выдаются в консоли: номер строки + тип ошибки = достаточно чтобы найти и исправить, не забыть в конце батника pause добавить, а то закроется.
Или можно из под MSYS работать (или как там его - желтого цвета в винде mingw32 ...)
Если сорцов много, то мейк-файл.

Цитата(aaarrr @ Apr 1 2018, 16:51) *
Да мало ли причин. В любом случае нельзя считать, что на карту с надписью "4GB" уместится 4 * 10^9 байт.

Под "урезать" имелось в виду убрать свободное место, а не лить тупо содержимое карты через dd.

Я ради этого купил карту 16 ГБ UHS-I , пригодится в хозяйстве.
Хотя и на старой карте 2 ГБ без класса скорости работают мои программы

---
2 вопроса:

1) Какими командами с помощью U-Boot загрузить по UART1 программу и дать ей управление? И по какому адресу должен быть слинкован код для A13 ?

С AT91RM9200 было так: был DFU Downloader, 2 команды: Load и Go

2) spl-sunxi.bin - инитит всё железо(тактовую частоту, SDRAM, MMU) или нет? Или это уже U-boot делает?

Просто если spl-sunxi.bin всё инитит, что с ним проще, особенно, если он может что-то загрузить

Сообщение отредактировал __inline__ - Apr 1 2018, 16:25
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 1 2018, 16:33
Сообщение #43


Гуру
******

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



Цитата(__inline__ @ Apr 1 2018, 19:22) *
Какими командами с помощью U-Boot загрузить по UART1 программу и дать ей управление? И по какому адресу должен быть слинкован код для A13 ?

Например, loady и go

Линковать с любого адреса SDRAM, не занятого самим u-boot.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 1 2018, 17:34
Сообщение #44


Гуру
******

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



Цитата(__inline__ @ Apr 1 2018, 19:22) *
2) spl-sunxi.bin - инитит всё железо(тактовую частоту, SDRAM, MMU) или нет? Или это уже U-boot делает?

Да, SPL проводит минимальную инициализацию. Насчет MMU не помню, скорее всего, кэш данных и MMU остаются отключены.

Для полной автоматизации загрузки рекомендую посмотреть USBBoot
Go to the top of the page
 
+Quote Post
mantech
сообщение Jul 23 2018, 11:55
Сообщение #45


Гуру
******

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



Цитата(__inline__ @ Apr 1 2018, 11:36) *
Качал вот этот архив: A13_debian_34_90_mainline_u-boot_release_11_3.7z, с торрента - файл прикладываю:
Прикрепленный файл A13_debian_34_90_mainline_u_boot_release_11_3.zip ( 25.23 килобайт ) Кол-во скачиваний: 10


Если не сложно, можете сюда выложить первый мегабайт этого файла, с их торрентов не скачивается, а у них (олимекса) на форуме даже не скачать файлы для их плат, дурдом какой-то, все ссылаются на торренты, на которых нет раздачи...
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 - 04:13
Рейтинг@Mail.ru


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