Čia toks greitas pranešimas. Kai būna noras ir laikas, kartais paspaudžioju savo ARM devboardą. Kadangi ten viskas nuo nulio, tai visiškai įdomu. Ypač low-level bibliotekų rašymas. Pažiūrėjęs į savo ARM eksperimentus, nutariau parašyti tekstinio LCD ekraniuko biblioteka. Jos rašymui, kaip pagrindą panaudojau jau visam internetui žinomą Peter Fleury darbą. Tik reikėjo viską adaptuoti AT91F serijos ARM procesoriukui. T.y. perrašyti visą hardwarinę dalį. Taip pat kiek supaprastinau opcijas- dabar prie LCD ekrano galima jungtis tik 4 bitais.
Kadandingi pas šitą (AT91SAM7S256) nėra jokių kojų bankų, o visos PIO eina iš eilės, teko pedaryti iš esmės duomenų perdavimą. Užtat dabar galima jungti prie bet kurio PIO.
Prie bibliotekos eina paprasta testinė programa. Ji nekorektiška, nes LCD ekranas pajungtas grynai skaitmeniškai ir kontrastas (Ve) padarytas grubiu PWM ciklu. Gal ateityje, kai skaitysit kitus postus, bus atskiras straipsniukas apie PWM ir ekranas valdysis kitaip. ARMas yra 3V, tuo tarpu LCD 5V, bet puikiausiai veikia- vadinasi IO yra suderinamas įvairiom įtampom.
Biški apie biblioteką. Ji daug maž suderinta su Peterio darbu, pagrindiniai nustatymai faile “lcd.h”. Ten reikia aprašyti LCD displėjų, jo dydį. Svarbiausia aprašyti kokia koja kur eina- tai daroma, kaip įprasta pas mano matytus SAMų projektus hardware faile “board.h”.
#define LCD_RS (1 < < 17) //PA17 #define LCD_RW (1 << 18) //PA18 #define LCD_E (1 << 19) //PA19 #define LCD_D4 (1 << 20) //PA20 #define LCD_D5 (1 << 21) //PA21 #define LCD_D6 (1 << 22) //PA22 #define LCD_D7 (1 << 23) //PA23
Čia matosi, kad LCD pajungtas prie 18- 23 PIO kojos.
Dar paminėsiu, kad softas turi veikti prie bet kurio SAM7 serijos ARM procesoriuko, tik kad aš išbandyti galėjau tik su savo AT91SAM7S256.
Nu ir aišku:text LCD library for ARM source code and compiled hex file, hexas aišku sukompiliuotas Atmel AT91SAM7S256AU čipui.
P.S. prie “standartinių” paprogramių, LCD.C turi ir “user defined symbol” paprogramę. Peteris ją užmiršo.
Sveikas, koki jtag adapteri naudoji? ar su juo galima butu nu”dump”inti prie at91sam9g20 prijungta flash’a ?
Segger J-Link kinišką kloną. Į klausimą visiškai negaliu atsakyti, nes dar mokausi naudotis šiais procesoriukais. Jau radau vieną problemą šiose LCD bibliotekose ir šiaip, kažkas pas mane su paleidimo konfiguracija suchimičinta.
Atsargiai su ARM’ais ir 5V. Ne vieną jau sudeginau. Datasheet’e parašyta, kurios kojos yra 5V tolerant, o kitos gavusios 5V degina procą.
Dėl flash’o niskaitymo, tai nereikia net jokių Jtag’ų, tie procai turi integruotą bootloaderį (žr. Žemiau). Tik kartais gamintojai užrakina flashą, ar dar kažko pridirba, kad kinai neklonuotų:).
“All SAM7, SAM3 and SAM9 MCUs integrate the ability to program whole Flash and associated Security/Lockbits without any additional hardware tools via USB or UART.”
Vytautai, tu is dalies teisus, uboot turi tavo mineta galimybe IRASYTI i flash’a (kaip ir bootintis is tinklo), taciau pradziai man reikia ji nuskaityti, apie ka ir buvo klausimas… Kaip suprantu tai galima butu atlikti ir per UART Debug interfeisa, taciau irenginyje sios kojos nera isvestos kazkur i plokste, yra tik JTAG interfeisas.
Na tai turi nusiskaityt ir per Jtag, jei kažko specialiai nepridirbta, kaip jau rašiau.
Dėl 5V:
All the I/O lines PA0 to PA31 on SAM7S512/256/128/64/321 (PA0 to PA20 on SAM7S32) are 5V-tolerant and all integrate a programmable pull-up resistor.
Dėl flasho nudumpinimo: Tai tas flash “šalia” ar “viduje”? Nes pradžioje parašyta, kad “šalia”, “prie at91sam9g20 prijungta flash’a”. Tiesa, pats MCU flašo viduje neturi didelio, ten tikriausiai tik boot loaderis.
Todėl jaučiu, kad problemų neturėtu kilti- nebent ten kriptografija arba NANDas, kur velnias suras, jei tai failu sistema kokia gudresnė.
Taip – flash’as šalia:
NAND: NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit) 256 MiB
Viduje sukasi custom linux4sam, naudojamas fs’as tiesiog skirtas NAND flash’ams:
Using yaffs2 (chunksize=2048 cpb=64 startb=0 endb=46 off=0x40000) yaffs: Mounting /nand
[…] programuojant STM32 mikroschemą. Dabar tik eksperimentuoju ir paprasčiausiai pakartojau senesnį ARM projektą su tekstiniu LCD ekranėliu. Kol kas nebraidžiojau optimizacijos pinklėse ir naudojausi kažkieno sukurtais primityvais, […]