Odeslat nové téma Odpovědět na téma  [ Příspěvků: 58 ]  Přejít na stránku 1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: FlySky FS-T6 alternativní firmware.
PříspěvekNapsal: ned 12.01.2020 13:56 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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í... :)

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
 
PříspěvekNapsal: ned 12.01.2020 17:22 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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...


Nahoru
 Profil  
 
PříspěvekNapsal: pon 13.01.2020 10:30 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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
Nahoru
 Profil  
 
PříspěvekNapsal: pon 13.01.2020 14:21 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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. ;-) )

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: pon 13.01.2020 14:55 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
:)

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 4479 krát ]



Naposledy upravil sky59 dne pon 13.01.2020 15:22, celkově upraveno 1
Nahoru
 Profil  
 
PříspěvekNapsal: pon 13.01.2020 15:13 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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]
118 krát

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)
Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: pon 13.01.2020 15:36 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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... :)


Nahoru
 Profil  
 
PříspěvekNapsal: pon 13.01.2020 23:00 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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.

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: úte 14.01.2020 6:31 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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


Nahoru
 Profil  
 
PříspěvekNapsal: úte 14.01.2020 21:34 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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ý.

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: úte 14.01.2020 21:52 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
Pripajam sa k pochvale :)

To si flashoval s nejakym JTAG?


Nahoru
 Profil  
 
PříspěvekNapsal: úte 14.01.2020 22:22 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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í.

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: stř 15.01.2020 8:13 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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


Nahoru
 Profil  
 
PříspěvekNapsal: stř 15.01.2020 10:06 
Mecenáš serveru
Mecenáš serveru
Uživatelský avatar

Registrován: 6.1.2012
Příspěvky: 3757
Bydliště: Řečkovice
Obrázky: 0
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.

_________________
(šroubovák | kleště | měřák | pájka | drátky | poletuchy | 24ch volantovka)


Nahoru
 Profil Soukromé album  
 
PříspěvekNapsal: stř 15.01.2020 13:49 
Mazák
Mazák

Registrován: 21.9.2015
Příspěvky: 991
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
Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 58 ]  Přejít na stránku 1, 2, 3, 4  Další

 


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 29 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  

 

  Powered by phpBB® Forum Software © phpBB Group  Český překlad – phpBB.cz 

 

NAVRCHOLU.cz