Свежие обсуждения
Микроконтроллеры

Дешевая альтернатива китам для изучения ARM9+linux - agestar lb2

1 2 3

fanta: На остальные вопросы, чуть позже - щас пилю более свежее ядро.

Зы Для справки. Ядро будет 2.6.24.4 , дебиан - lenny arm. Можете оценить возможности.

Ну и ?
Тема интересна...

 

Всё нижесказанное относиться к AgeStar LB2, а также для других устройств на основе STR8132, например NSB3AST или http://www.dealextreme.com/forums/Forums.dx/Forum.20383~threadid.298209 Отличая в них незначительны.

Шаг 1. Вскрываем коробочку, вынимаем плату - и подпаиваем любой переходник (USB-COM или RS232 с уровнями TTL-3.3) к контактам RX TX на обратной стороне платы.

Осматриваем плату – там всёго три основных микросхемы: STR8132, DDR SDRAM на 32 мегабайта, и SPI флэш на 8 мегабайт.

В исходном состоянии во флэщ находится: U-boot (самый важный элемент – загрузчик, если его нечаянно стереть, то восстановить можно только выпаяв микросхему и подцепив внешний программатор (JTAG разъем присутствует, но я с ним не разбирался), данные для U-boot, ядро и файловая система:

Area 0: 30000000 to 3002FFFF – u-boot
Area 1: 30030000 to 3003FFFF – окружение u-boot
Area 2: 30040000 to 3023FFFF - ядро
Area 3: 30240000 to 307FFFFF

Шаг 2.

Подключаем коробочку к компьютеру через вышеуказанную последовательную консоль. Скорость порта 38400. Жмем ресет и подключаем питание. Дожидаемся приглашения U-boot.

Проверяем:

Star Equuleus # printenv
baudrate=38400
ethaddr=00:aa:bb:cc:dd:10
ipaddr=192.168.10.2
serverip=192.168.10.3
netmask=255.255.255.0
cpu_clock=250
bootcmd=cp.l 0x30040000 0xcf00000 0x80000;go cf00000
bootdelay=0
stdin=serial
stdout=serial
stderr=serial

Environment size: 225/65532 bytes

Star Equuleus # flinfo
DataFlash: ST M25P64
Page Count: 32768
Page Size: 256
Size: 8388608 bytes
Logical Address: 0x30000000
Area 0: 30000000 to 3002FFFF
Area 1: 30030000 to 3003FFFF
Area 2: 30040000 to 3023FFFF
Area 3: 30240000 to 307FFFFF

Сразу меняем некоторые параметры:

setenv bootdelay 5
setenv baudrate 115200
saveenv

Т.е. мы установили задержку автозагрузки в 5 секунд и сменили скорость порта на 115200 и сохранили настройки во флэш.

Шаг 3

Для удобства ковыряния, я выбрал следующую конфигурацию: в SPI флэш лежит только U-boot, его окружение и ядро. Файловая система на отдельном USB накопителе (не важно usb-флэшка или внешний винт).

U-boot мы трогать не будем, а вот ядро мы будем собирать сами, ибо в штатном ядре многого не хватает. К сожалению в ванильной ветке ядра нашего чипа нет, но есть в сети два варианта: http://www.multicase.de/en/download/ns348s/GPL-8132.rar - это 2.6.16 , что слишком старовато и http://www.cnusers.org (требуется регистрация) здесь лежит CNS21XX LINUX BSP-7.8.2 (Kernel ver.2.6.24) (CNS2100 = STR8132). Работать будем именно c 2.6.24 . Регистрируемся и скачимаем.

Далее нам нужен компьютер с Линуксом. Я использую VMWare, на которой живет Федора.

Шаг 4

Для того, чтобы собрать ядро, нам нужен кросс-компилятор. Я не стал собирать его сам, а взял тут http://www.codesourcery.com/sgpp/lite/arm/portal/release1033

Итак, разархивируем ядро (файл CNS2100-LSDK-7.8.2.tar.bz2) в любое место (например /home/user/str8132). Из каталога configs файл str8132_defconfig_ramimage – кладем в корень папки с ядром и переименовываем в .config

Далее: CROSS_COMPILE="/home/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-" ARCH="arm" make menuconfig

(где ="/home/CodeSourcery/ - путь до кросс-компилятора) - настраиваем ядро (меняем там скорость порта, строку загрузки и т.д.)

Потом: CROSS_COMPILE="/home/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-" ARCH="arm" make

Всё, мы получили ядро (файл zImage в каталоге arch/arm/boot), и его можно стартовать на плате.

Шаг 5

Для запуска нашего ядра можно пойти двумя путями.

1. Поднять на компе tftp сервер
2. Загрузить файл по последовательному порту

Для варианта один, в u-boot надо:

tftpboot 0x1000000 zImage

Для второго:

loadb 0x1000000

Далее:

go 0x1000000

Ядро должно загрузиться:

Linux version 2.6.24.4 (root@localhost.localdomain) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-68) ) #7 Wed Feb 23 12:09:47 MSK 2011
CPU: FA526id(wb) [66015261] revision 1 (ARMv4), cr=0000397f
Machine: STAR STR8100
Warning: bad configuration page, trying to continue
Ignoring unrecognised tag 0x00000000
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 8192
DMA zone: 64 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 8128 pages, LIFO batch:0
Normal zone: 0 pages used for memmap
Movable zone: 0 pages used for memmap
CPU0: D VIVT write-back cache
CPU0: I cache: 8192 bytes, associativity 2, 16 byte lines, 256 sets
CPU0: D cache: 8192 bytes, associativity 2, 16 byte lines, 256 sets
PLL clock at 175MHz
CPU clock at 175MHz
AHB clock at 87MHz
APB clock at 43MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS0,115200 noinitrd root=/dev/sda1 rootdelay=7 rw ip=192.168.1.77
PID hash table entries: 128 (order: 7, 512 bytes)
Console: colour dummy device 80x30
console [ttyS0] enabled
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 28088KB available (4020K code, 252K data, 84K init)
Calibrating delay loop... 133.93 BogoMIPS (lpj=669696)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 64 bytes
NET: Registered protocol family 16
PCI clock at 33M
PCI: bus0: Fast back to back transfers disabled
PCI Bridge found
PCI map irq: 00:00.00 slot 0, pin 1, irq: 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
str8100_rtc.o: rtc module version 1.0.0
NetWinder Floating Point Emulator V0.97 (extended precision)
JFFS2 version 2.2. (NAND) б╘ 2001-2006 Red Hat, Inc.
io scheduler noop registered (default)
Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0x78000000 (irq = 9) is a 16550A
serial8250: ttyS1 at MMIO 0x78800000 (irq = 10) is a 16550A
Star NIC Driver(for Linux Kernel 2.6) - Star Semiconductor
rxring.vir_addr=0xFFC00000 rxring.phy_addr=0x01D17000
txring.vir_addr=0xFFC01000 txring.phy_addr=0x01D72000
Star Internal PHY
MAC Addr: 08:0a:0b:0c:0d:0e

star_nic_init_module: internal phy patch included.
star_nic_init_module: scatter/gather enabled.

Intel(R) PRO/1000 Network Driver - version 7.3.20-k2-NAPI
Copyright (c) 1999-2006 Intel Corporation.
e100: Intel(R) PRO/100 Network Driver, 3.5.23-k4-NAPI
e100: Copyright(c) 1999-2006 Intel Corporation
Driver 'sd' needs updating - please use bus_type methods
STR8100 SPI: init
m25p80 spi1.0: m25p64 (8192 Kbytes)
Creating 5 MTD partitions on "m25p80":
0x00000000-0x00800000 : "all"
0x00000000-0x00040000 : "ARMBOOT"
0x00040000-0x00140000 : "Linux Kernel"
0x00140000-0x007f0000 : "MTD Disk1"
0x007f0000-0x00800000 : "MTD Disk2"
usbmon: debugfs is not available
str8100-ehci str8100-ehci: str8100-ehci
str8100-ehci str8100-ehci: new USB bus registered, assigned bus number 1
str8100-ehci str8100-ehci: irq 24, io mem 0xcc000000
str8100-ehci str8100-ehci: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver (STR8100)
str8100-ohci str8100-ohci: str8100-ohci
str8100-ohci str8100-ohci: new USB bus registered, assigned bus number 2
str8100-ohci str8100-ohci: irq 23, io mem 0xc4000000
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
Initializing USB Mass Storage driver...
usb 1-1: new high speed USB device using str8100-ehci and address 2
usb 1-1: configuration #1 chosen from 1 choice
usb 2-2: new full speed USB device using str8100-ohci and address 2
usb 2-2: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
usbcore: registered new interface driver mdc800
drivers/usb/image/mdc800.c: v0.7.5 (30/10/2000):USB Driver for Mustek MDC800 Digital Camera
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for cp2101
usbcore: registered new interface driver cp2101
drivers/usb/serial/cp2101.c: Silicon Labs CP2101/CP2102 RS232 serial adaptor driver v0.07
drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232RL
usb 2-2: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio
drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
drivers/usb/serial/usb-serial.c: USB Serial support registered for IR Dongle
usbcore: registered new interface driver ir-usb
drivers/usb/serial/ir-usb.c: USB IR Dongle driver v0.4
drivers/usb/serial/usb-serial.c: USB Serial support registered for GSM modem (1-port)
usbcore: registered new interface driver option
drivers/usb/serial/option.c: USB Driver for GSM modems: v0.7.1
drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
str8100_wdt.o: watchdog module version 1.0.1
usbcore: registered new interface driver usbhid
drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
Waiting 7sec before mounting root device...

Продолжение следует…

 

продолжения не будет....

меня сейчас тут забанят. Все вопросы к модераторам (Арсу).

 

dosikus: Тема интересна...

Приютишь на форуме у себя ?

 

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

 

fanta
Блин, а в текстовом файле проще была написать и прикрепить его, что бы такие пеленки не листать

 

Некоторые мысли:
0) И правда, за 1000 рублей просто халява! Я не смог пройти мимо и купил в ближайшем компьютерном магазине эту штуку. За них вы получаете настоящий компьютер с Linux, 8Мб флеша и 32Mb RAM и процом ARM922 на 200 или 250МГц. С двумя юсб-разъемами оно может почти быть чем угодно . А с дефолтной китайской прошивкой оно смогло выжать около 7Мб/сек по фтп. Что довольно неплохо для такой мелочи. Свои 1000 рублей эта китайская коробочка определенно стоит. У меня оно правда уже с чипом CNS2132, который является всем известным Star 8132 но уже маркированым Cavium Networks, это тот же самый чип но уже с маркировкой Cavium'а . Качество сборки конечно та еще китайчина, вебморда отличается убогостью, а кернел - ископаемостью и поддержкой аж целых XFS и FAT32 на выбор. Первый грузит и без того дохлый проц, но хотя-бы работает более-менее быстро, а второй вообще пережиток времен MSDOS и заслуживает только гвоздиков в гроб.
1) К сожаленеию, по умолчанию нет телнета или ssh, а площадки уарта сделаны весьма через жопу. Что немного омрачает получение правов рута на девайсе сухими и комфортными методами вот так сходу.... :\
2) Оказывается, на этот процессор доступна вполне культурная документация на уже упомянутом cnusers.org (да, нужна регистрация, которую медленно аппрувят к тому же) а сам процессор достаточно прост для понимания его кишков простыми смертными. И корпус относительно простой для этого класса чипов: при сильном желании можно что-то припаять прямо к процу (с BGA такие фокусы е прокатят). За документацию Cavium'у/Star'у огромное спасибо, очень мило с их стороны. Все бы так .
3) Поскольку есть пункт 2) то вы можете легко найти пинаут JTAG - внимание на угол чипа, выводы 99 - 105. Так что если загрузчик вдруг все-таки сотрется, у нас оказывается есть запасной парашют. Правда, хорошо бы прозвонить плату и понять выведены ли эти лапки на загадочный JP3, или это не оно. В общем тестер мне в руки, да...
4) На упомянутом сайте cnusers.org также есть и SDK с исходниками ядра. К сожалению с совсем античным GCC 3.4.4 (некромансия!) и вмеру ископаемым ядром 2.6.24, которое свежестью не отличается. Зато правда среди этих раритетов заодно накопались исходнички U-boot под эти CNS21xx, что довольно мило с их стороны. Так что если нам что-то в этом загрузчике не понравится... пусть он пеняет на себя. С запасным парашютом в виде jtag - не так ссыкотно уже. Кто не знает как и что с jtag делать - читает что-то в районе openwrt.org по части "debricking" - там более-менее понятно процедура изложена, но это все-таки не является затеей для чайников ;)
5) Не прошло и трех дней как мне зааппрувили регистрацию и я смог скачать их антиквариат . В награду среди костей были найдены сырцы u-boot и вполне зачетный даташит на проц, так что оно того все-таки стоило. К сожалению, основная цель раскопок ака 24-е ядро в сырцах - смотрится как-то очень уж печально. Учитывая что в trunk версии openwrt я случайно так нашел патчи аж под 2.6.37 ядро для поддержки этих чипов (CNS21xx) на какой-то весьма похожей железяке с тем же процом. Как нетрудно догадаться, поддержка железки на том же чипе - котируется на все 99%. Несовпадать там практически нечему, остальное - тот 1% который может быть придется подправить
6) Уважаемый fanta, а как вы ему частоту снизили? Греется он и правда зверски. Мне от него произодительность не нужна, а вот потребление роляет - хочу батарейкой в перспективе подпитать. И сам проц довольно горячий, да еще на входе как я понимаю 2 линейных стабилизатора вжаривают. Блин, задавила жаба китайцев на импульсники. Мелкое жлобство, а грееется намного больше. Ну вот какого, а?

 

нет ли укого фоток этой вещИ в разобранм виде?

 

С точки зрения эмбэддера слишком мало возможностей. Лучше в чине кит купить http://www.alibaba.com/product-gs/424825676/AT91SAM9261_MDK9261_Core_Board.html дешевеле олимексовских китов можно найти. вплоть до телефонной платформы)))

 

Фотографии - ловите. Сделаны лично мной (и спасибо аппарату Nokia n900 за более-менее вменяемый макрорежим).
Аттачиться сюда фотографии не захотели. Форум делает вид что приаттачил, но я их не вижу. Поэтому они были выложены на фалопомойку:
http://rghost.net/5159745.view - низ.
http://rghost.net/5159751.view - верх

Условия использования: CC-BY-SA 3.0.

Бонус: я протрассировал пинаут незапаянного разъема JP3, который "якобы JTAG". Он оказался нифига не JTAGом. Китайцы просты и прямолинейны как топор. Вместо возни с JTAG они вытянули на эти пины прямо SPI шину флешки (которая 25P64). Поэтому программится оно просто и брутально: считаете что это SPI-флеха и шьете ее соответствующе. Программатором для SPI флешек, простейший из которых не сложнее примитивного JTAG на LPT порт (строго говоря, на физическом уровне JTAG тоже является частным случаем SPI-шины).

Пинаут этой красоты, пригодится если загрузчик снесете ненароком.
o pin8 - 3.3V Vcc ------ Flash IC pin 2 (attached to 3V3 LDO output).
o pin7 - SPI HOLD#/IO3 ------ Flash IC pin 1 (SPI signal?)
o pin6 - SPI Flash SCK ------ Flash IC pin 16 (Clock pin of SPI flash)
o pin5 - SPI Flash SI ------- Flash IC pin 15 (Slave Input of SPI flash)
o pin4 - SYSTEM GND ------- Flash IC pin 10 (system GND)
o pin3 - SPI Flash W# ------- Flash IC pin 9 (W# signal pin of SPI flash)
o pin2 - SPI Flash SO ------- Flash IC pin 8 (Slave Output pin of SPI flash)
# pin1 - SPI Flash CS ------- Flash IC pin 7 (Chip Select pin of SPI flash)
|
|JP3
------

Вообще, схема данной платы довольно тривиальна и никаких особых проблем из себя не представляет. Любой вменяемый электронщик должен рисовать это с закрытыми глазами. Даже лучше можно сделать - за греющиеся как печки LDO китайцев хочется немного придушить.