RCmania.cz - web pro modeláře a modely
http://rcmania.cz/

FlySky FS-T6 alternativní firmware.
http://rcmania.cz/viewtopic.php?f=38&t=87297
Stránka 1 z 4

Autor:  prikrylm [ ned 12.01.2020 12:56 ]
Předmět příspěvku:  FlySky FS-T6 alternativní firmware.

Hraju si s FS-T6 a narazil na (pravděpodobně) uprevený er9X firmware pro FS-T6. Prý z toho dostal osmikanál.
Nemáte někdo přeloženou binárku? Nebo jsem blbě hledal a je tam? Nechce se mi budovat celé prostředí pro kompilaci FW.
Rozchodit zápis a čtení FW už se mi podařilo.

Díky za každé nakopnutí... :)

Autor:  sky59 [ ned 12.01.2020 16:22 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

prikrylm píše:
Hraju si s FS-T6 a narazil na (pravděpodobně) uprevený er9X firmware pro FS-T6. Prý z toho dostal osmikanál.
Nemáte někdo přeloženou binárku? Nebo jsem blbě hledal a je tam? Nechce se mi budovat celé prostředí pro kompilaci FW.
Rozchodit zápis a čtení FW už se mi podařilo.

Díky za každé nakopnutí... :)


Asi sa tomu nevyhnes...
Skus ci najdes hotovy cross toolchain pre stm32, potom by to bola na ubuntu malina...

Autor:  sky59 [ pon 13.01.2020 9:30 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

mal som svetlu chvilku tak som ti to prelozil pokial mas zaujem tak je to v prilohe

tu je log z prekladu:

user@user-HP-ProDesk-400-G4-MT:~/stm32/ar-t6-master/firmware$ make clean && makerm -rf system/startup_stm32f10x_md_vl.o peripherals/src/stm32f10x_dma.o peripherals/src/stm32f10x_dbgmcu.o peripherals/src/stm32f10x_iwdg.o peripherals/src/stm32f10x_dac.o peripherals/src/stm32f10x_can.o peripherals/src/stm32f10x_rtc.o peripherals/src/stm32f10x_pwr.o peripherals/src/stm32f10x_i2c.o peripherals/src/stm32f10x_sdio.o peripherals/src/stm32f10x_rcc.o peripherals/src/stm32f10x_flash.o peripherals/src/stm32f10x_crc.o peripherals/src/stm32f10x_usart.o peripherals/src/stm32f10x_tim.o peripherals/src/stm32f10x_cec.o peripherals/src/misc.o peripherals/src/stm32f10x_wwdg.o peripherals/src/stm32f10x_adc.o peripherals/src/stm32f10x_spi.o peripherals/src/stm32f10x_bkp.o peripherals/src/stm32f10x_exti.o peripherals/src/stm32f10x_fsmc.o peripherals/src/stm32f10x_gpio.o system/core_cm3.o system/system_stm32f10x.o settings.o strings.o lcd.o main.o system.o pulses.o gui.o debug.o sticks.o keypad.o tasks.o eeprom.o sound.o mixer.o icons.o usart.o peripherals/src/stm32f10x_dma.d peripherals/src/stm32f10x_dbgmcu.d peripherals/src/stm32f10x_iwdg.d peripherals/src/stm32f10x_dac.d peripherals/src/stm32f10x_can.d peripherals/src/stm32f10x_rtc.d peripherals/src/stm32f10x_pwr.d peripherals/src/stm32f10x_i2c.d peripherals/src/stm32f10x_sdio.d peripherals/src/stm32f10x_rcc.d peripherals/src/stm32f10x_flash.d peripherals/src/stm32f10x_crc.d peripherals/src/stm32f10x_usart.d peripherals/src/stm32f10x_tim.d peripherals/src/stm32f10x_cec.d peripherals/src/misc.d peripherals/src/stm32f10x_wwdg.d peripherals/src/stm32f10x_adc.d peripherals/src/stm32f10x_spi.d peripherals/src/stm32f10x_bkp.d peripherals/src/stm32f10x_exti.d peripherals/src/stm32f10x_fsmc.d peripherals/src/stm32f10x_gpio.d system/core_cm3.d system/system_stm32f10x.d settings.d strings.d lcd.d main.d system.d pulses.d gui.d debug.d sticks.d keypad.d tasks.d eeprom.d sound.d mixer.d icons.d usart.d system/startup_stm32f10x_md_vl.d ar-t6.bin ar-t6.elf ar-t6.map
Cleaned up
system/startup_stm32f10x_md_vl.S
peripherals/src/stm32f10x_dma.c
peripherals/src/stm32f10x_dbgmcu.c
peripherals/src/stm32f10x_iwdg.c
peripherals/src/stm32f10x_dac.c
peripherals/src/stm32f10x_can.c
peripherals/src/stm32f10x_rtc.c
peripherals/src/stm32f10x_pwr.c
peripherals/src/stm32f10x_i2c.c
peripherals/src/stm32f10x_sdio.c
peripherals/src/stm32f10x_rcc.c
peripherals/src/stm32f10x_flash.c
peripherals/src/stm32f10x_crc.c
peripherals/src/stm32f10x_usart.c
peripherals/src/stm32f10x_tim.c
peripherals/src/stm32f10x_cec.c
peripherals/src/misc.c
peripherals/src/stm32f10x_wwdg.c
peripherals/src/stm32f10x_adc.c
peripherals/src/stm32f10x_spi.c
peripherals/src/stm32f10x_bkp.c
peripherals/src/stm32f10x_exti.c
peripherals/src/stm32f10x_fsmc.c
peripherals/src/stm32f10x_gpio.c
system/core_cm3.c
system/system_stm32f10x.c
settings.c
strings.c
lcd.c
main.c
system.c
pulses.c
gui.c
debug.c
sticks.c
keypad.c
tasks.c
eeprom.c
sound.c
mixer.c
icons.c
usart.c

Linking ar-t6.elf
text data bss dec hex filename
81776 56 4520 86352 15150 ar-t6.elf

Producing binary ar-t6.bin

Přílohy:
ar-t6.zip [30.16 KiB]
120 krát

Autor:  prikrylm [ pon 13.01.2020 13:21 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Díky za snahu, sám jsem se k tomu ještě nedokopal (resp už jsem stvořil virtuální stroj se svým oblíbeným Debianem).

Rádio se tváří, že má akorát 64kB EEPROM, tak nevím, jestli se mám vůbec pokoušet do ní dostat přes 80kB binárku...

V každém případě ještě jednou díky za snahu, až se potkáme, máš u mě pivo. (Ale musíš se připomenout. ;-) )

Autor:  sky59 [ pon 13.01.2020 13:55 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

:)

ak mas original bin file, mozes to skusit otvorit v napr. HeX editore, ze nakolko sa podobaju oba bin subory, minimalne tie udaje na zaciatku bin suboru vyzeraju ako
nejake vektory do pamate..

a nie je eeprom iba na uzivatelske udaje? nastavenia? na program sa vacsinou pouzivaju flash pamate...

asi musis pozriet ze aky typ je presne vo vnutri, vid priloha, existuje aj s 128kB flash

Přílohy:
Unbenannt.jpg
Unbenannt.jpg
[ 73.74 KiB | Zobrazeno 4463 krát ]


Autor:  prikrylm [ pon 13.01.2020 14:13 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Možná jsem pomotal termity (takže ne EEPROM ale Flash?) :) "Tool" píše "Flash size 64kB".
Vnutil jsem tu ten dodaný bin a neprotestoval a cosi přes sériovku poslal. Ale něco dělám špatně, firmware zůstal nezměněný. Jdu studovat dál...

(orig obsah procesoru je v příloze...)

Přílohy:
fs-t6.zip [20.86 KiB]
117 krát

Autor:  sky59 [ pon 13.01.2020 14:36 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

obsah originalneho suboru suhlasi s architekturou co mi vygeneroval ten "novy" zdrojak, naviac uzitocne data su menej ako polovica tj. 32kB

pokial mas 64kB procesor tak ten "novy" tam urcite nevojde musel by byt verzia 128kB, ale to najlepsie poznas ak to precitas co je na nom napisane, ci "8" alebo "B"

EDIT: a toto je uplne najzaujmavejsia stranka!

https://openrcforums.com/forum/viewtopi ... 5&start=30

tvrdia tu, ze aj ked je napisane na nom "8" tak ma 128kB !? myslia si, ze sa im nechcelo menit produkciu... :)

Autor:  prikrylm [ pon 13.01.2020 22:00 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Podle nápisů na čipu a reportu programovacího nástroje je to 64kB. Byl jsem drzý a palič nastavil na 128kB a pustil.

Tipnu, že kdyby byl 64kB, tak se vysílačka buď vůbec nerozjede nebo něco bude hodně špatně fungovat.
Nic méně po zapnutí se rádio jeví funkční 8ch. Přijímač na 8ch (zatím) nemám, takže 7 a 8ch neověřím.
EEPROM na modely nesmazal, takže vidím nějaký šum typu model 5 jménem "dddd:`" a podobně, ale init modelu nebo přejmenování zafunguje.
Jinak takový ořezaný ER9X. 8 kanálů, 14 modelů, dual rate a vstupní křivky ala ER9X, funkční mixer s možností volit řádek mixu zapnutým vypínačem, takže primitivní režimy letu taky půjdou, křivky 5 a 9 bodů (celkem pracné je nastavit), fungují timery, pípá to, svítí to.

Nefunguje heli mix (to autor psal), nefungují logické fce (asi taky nemělo), nejsou na konci vzory modelů. Občas z ničeho nic vyskočí okno "zkalibrujte kniply" i když jsou zkalibrované, ale na funkci nemá vliv :)

Ještě zkusím jak funguje vstupní a výstupní PPM nakonektoru (pak by mohl fungovat učitel-žák) a zkusím zjistit jestli se dá udělat další flash (dostat vysílačku do režimu updatu FW) aniž bych musel dávat ručně procesor do resetu...

Dnešní závěr: opětovné díky za kompilaci pro sky59, vypadá to funkční - za typ prachy* super. :) A navíc spousta hraní. Žejo.

----
* cca 150-200 Kč

Tož tak.

Autor:  sky59 [ úte 14.01.2020 5:31 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Takze super a navyse bude pravda s tou velkostou flash ze je vo vnutri fyzicky vacsia ale predavaju to za mensiu cenu ako 64kB, naco by si komplikovali vyrobny proces cipu?

EDIT: rozpraval som sa s kolegom o tomto pripade a on vie s URCITOSTOU ze Microchip to robi rovnako: vyrabaju vzdy kremikove chipy (die) s maximalnou flash-kou, avsak testuju iba nejaku cast, pretoze test je z vyrobneho procesu najdrahsi, a potom to predavaju ako velkost pamate co otestovali, to ale vobec neznamena ze by cela flash-ka nemala byt v poriadku

Autor:  prikrylm [ úte 14.01.2020 20:34 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Jestli je drahý test, tak se to dá pochopit.

Ještě jsem dneska zkusil "návrat k původnímu FW", takže jsem na tamní 20-ti pin napájel nějaké piny, přidal drátek, co BOOT0 napojí na +3,3v + další piny, aby se dal proces zápisu FW napájet z programátoru a nemusela se připojovat baterka a zpětný flash zafungoval. (Musím se pochválit :-D )

Ten AR FW je trochu nevyladěný. Jak jsem psal, že občas vyskočí okýnko "zkalibruj páky", tak pokud se tak stane při brouzdání v menu, tak tahle akce nějak zasahuje do EEPROM (vynuluje?) a minimálně "rozkalibruje kniply" a musí se znovu zkalibrovat a ztratí se i nastavení aktuálně editované stránky, takže trochu zákeřné.

No, lítat s tímhle FW asi nebudu, ale na tank dobré... :)

Autor, zdá se, už FW dál nevyvíjí a já se vysokou pravděpodobností nebudu nudit tak, že bych se do nějakých úprav pustil.

Za dnešek: Parááda! :)

Ještě zkusím ještě trenéra a napípat nějaký složitější mix, kolik se tam toho vleze a jestli model vydrží napípaný.

Autor:  sky59 [ úte 14.01.2020 20:52 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Pripajam sa k pochvale :)

To si flashoval s nejakym JTAG?

Autor:  prikrylm [ úte 14.01.2020 21:22 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Děkuji! Děkuji! :)

Použil jsem interní sériovku. To, co je vyvedené na venkovní konektor (USART1_TX/RX), akorát zpátky na orig FW se musí rádio rozebrat a "zapnout" ten BOOT0.
Na interní sériovku jsem pak napojil jakousi čínskou kopii FTDI, program tam láduju něčím od ST, co se jmenuje "Flash Loader Demonstrator".

...
S tím mazáním nastavení při vyskočení okna je to ještě jen někde a jen někdy...
Teď jsem tam napípal nějaké mixy (samokřídlo), křivku, časovač a uvidím, co to udělá.
- v mixech nefunguje jako vstup spínač (ale dá se obejít), nefungují CYC1-3 - pochopitelně, nefunguje zpomalení a zpoždění.

Autor:  sky59 [ stř 15.01.2020 7:13 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

v zmysle ze "aktivny blbec" je horsi ako triedny nepriatel, mozno by stalo za uvazenie zrusit to automaticke kalibrovanie, netusim (nepozeral som zatial) ze na zaklade coho sa to vyvola automaticky, ake je kriterium, ale asi nebude dobre

pokial sa da kalibracia vyvolat manualne v menu, stalo by za uvazenie zrusit to automaticke vyvolavanie kalibracie a bolo by po probleme ?

toho kodu nie je az tak vela ze by sa to nedalo najst...

EDIT:
tak je to v subore settings.c :
----------------------------------------------------------------------------------------------------
static void settings_process(uint32_t data) {
uint16_t chksum;

char state = eeprom_state();
display_busy(state == 'B');

/* do not update eeprom when cal is in progress
* it's changing the data on the fly (IRQ) and will cause spurious error messages
*/
if (gui_get_layout() != GUI_LAYOUT_STICK_CALIBRATION) {
// see if general settings need to be saved
chksum = eeprom_calc_chksum((void*) &g_eeGeneral,
sizeof(EEGeneral) - 2);
if (chksum != g_eeGeneral.chkSum) {
g_eeGeneral.chkSum = chksum;
display_busy(1);
eeprom_write(0, sizeof(EEGeneral), (void*) &g_eeGeneral);
// check after write
unsigned cs = eeprom_checksum_memory(0, sizeof(EEGeneral) - 2);
if (chksum != cs) {
uint16_t chksum2 = eeprom_calc_chksum((void*) &g_eeGeneral,
sizeof(EEGeneral) - 2);
dputs("eeprom general CS mismatch after write ");
dputs_hex4(chksum);
dputs_hex4(cs);
dputs_hex4(chksum2);
dputs("\r\n");
// err message only when struct was not modified in between
if( chksum ==chksum2 )
gui_popup(GUI_MSG_EEPROM_INVALID, 0);
}
}
}

save_current_model_if_modified();
load_current_model_if_changed();

#if 0
dputs_hex4(eeprom_calc_chksum((void*) &g_model,
sizeof(g_model) - sizeof(g_model.chkSum)));
#endif

task_schedule(TASK_PROCESS_EEPROM, 0, 1000);
}
------------------------------------------------------------------------------------------------

neviem naco a preco neustale zapisuje do eeprom, myslim ze len koli aktualnemu stavu baterie
ta hlaska co vidis je vyvolana s gui_popup(GUI_MSG_EEPROM_INVALID, 0); a je to: (?) "Calibration data invalid, please calibrate the sticks."

neviem ako je to v original programe ale autor ma nejake problemy s pristupom do eeprom, vid:
pri inicializacii opakovane cita eeprom az sa mu to nakoniec podari
-----------------------------------------------------------------------------

void settings_init(void) {

// Read the configuration data out of EEPROM. Perform few attempts as it fails occasionally
int cnt = 2;
while( !eeprom_read(0, sizeof(EEGeneral), (void*) &g_eeGeneral) && --cnt ) ;
uint16_t chksum =
eeprom_calc_chksum((void*) &g_eeGeneral, sizeof(EEGeneral) - 2);
if (chksum != g_eeGeneral.chkSum) {
dputs("eeprom general CS bad ");
dputs_dec(2);
dputs_hex4(chksum);
dputs_hex4(g_eeGeneral.chkSum);
dputs("\r\n");
puts_mem(&g_eeGeneral, sizeof(g_eeGeneral));
gui_popup(GUI_MSG_EEPROM_INVALID, 0);
// re-Read the configuration data out of EEPROM;
// perhaps it just fails on first access?
eeprom_read(0, sizeof(EEGeneral), (void*) &g_eeGeneral);
}

// now register eeprom update task
task_register(TASK_PROCESS_EEPROM, settings_process);
settings_process(0);
}
-----------------------------------------------------------------------------------------------

ak tam ma nejaky bug ohladom eeprom najjednoduchsie je opravit pristup do eeprom a vsetko by malo hrat ako vino

Autor:  prikrylm [ stř 15.01.2020 9:06 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Díky za průzkum.
Otázka je jestli to, co mám v rádiu fakt není nějaká historická verze CPU, která se chová trochu jinak jak 128k verze. Možná stačí, že je trochu pomalejší - i když to je vzhledem ke krystalu asi blbost.

Ale zmiňuje se, že veškeré vstupy jsou přes přerušení, tak možná se občas podaří, že čtení EEPROM přeruší právě něco takového. A je to možné, pokud jsem měnil údaj ve větším rozsahu rollerem (např ze 100 na -100), což je mimochodem pěkná otrava, tak tahle hláška byla celkem častá.

Praktické zkušenosti s programováním jednočipů takového rozsahu nemám. Zkusím si rozchodit nějaké prostředí. Sice tiše doufám, že pokus o opravu udělá někdo jiný, ale kdyby ne, aspoň se pokusím. Zmr(t)vit se rádio nedá a člověk by měl pořád zkoušet něco nového, žejo.

Autor:  sky59 [ stř 15.01.2020 12:49 ]
Předmět příspěvku:  Re: FlySky FS-T6 alternativní firmware.

Zapis do eeprom je volany 1x za sekundu
Autor pouziva nejaky hotovy kod od dakeho anglicana
Teraz je clk do eeprom 200kHz
Ak by si chcel, mozem to znizit na 50kHz ze co by to urobilo, ani nie koli frekvencii ale koli tomu ze by sa pomenili casove relacie ohladom eeprom, ak by sa to zhorsilo je mozne pouzit max frekvenciu 400kHz

EDIT:

s odstupom casu ma napadlo, ze problem moze byt v tom, ze zapisuju cele stranky do eeprom, zapis 1 bytu trva az do 100ms, zavisi od pamate
cize je celkom mozne, ze to do 1 sekundy nestihne

urobil som 2 zmeny:
- zvysil som CLK pre eeprom na maximum 400kHz (urychli sa komunikacia, ostane viac casu na vykonanie zapisu)
- predlzil som interval z 1 sekundy na 2 sekundy kedy sa periodicky zapisuje do eeprom, cize po "kalibracii" treba vyckat 2 sekundy

co som pozeral, ziadna kalibracia sa vlastne asi ani nerobi, pretoze iba blbo zapise pevne udaje do eeprom, alebo som zle precital program?

ak chces vyskusat tak upraveny bin je v prilohe

Přílohy:
ar_t6_2sec_400kHz.zip [30.19 KiB]
109 krát

Stránka 1 z 4 Všechny časy jsou v UTC + 1 hodina
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/