summaryrefslogtreecommitdiff
path: root/utils/hwstub/stub (follow)
Commit message (Collapse)AuthorAge
* hwstub: rewrite exception catchingAmaury Pouly2017-01-24
| | | | | | | | | | | | | | | | | Since we can catch exceptions like data aborts on read/write, it takes very little to also catch exceptions in calls. When extending this with the catching of illegal instructions, the call instruction now becomes much more robust and also for address and instruction probing. Since we can catch several types of exception, rename set_data_abort_jmp to set_exception_jmp. At the same time, simplify the logic in read/write request handlers. Also fix a bug in ARM jump code: it was using stmia r1, {..., pc} as if pc would get current pc + 8 but this is actually implementation defined on older ARMs (typically pc + 12) and deprecated on newer ARMs, so rewrite the code avoid that. The set_exception_jmp() function now also reports the exception type. Change-Id: Icd0dd52d2456b361b27c4776be09c3d13528ed93
* hwstub/jz460b: implement exception recoveryAmaury Pouly2017-01-24
| | | | | | | | | Now that we now that jz4760b implements EBASE, we can use it to rebase exceptions to use a k1seg address, that maps to the physical address of the TCSM0. It requires to enable HAB1 to have this translation. This most the most inefficient way to access tighly coupled memory ever, but it works. Change-Id: I894ca929c9835696102eb2fef44b06e6eaf96d44
* hwstub/jz4760b: build packtools automatically if neeededAmaury Pouly2017-01-24
| | | | Change-Id: I543e405bf75868d0f7509a35e08fe31ed253e0e6
* hwstub: add verbose mode to makeAmaury Pouly2017-01-24
| | | | | | Use make V=1 to print all commands Change-Id: I28bd4151178413f10ddab292f1d582a9d019f5ea
* hwstub: add support for coprocessor operationsAmaury Pouly2017-01-24
| | | | | | At the moment the stub only implement them for MIPS. Change-Id: Ica835a0e9c70fa5675c3d655eae986e812a47de8
* hwstub: add the possibility to flush caches before execAmaury Pouly2017-01-24
| | | | | | | | | | This is needed on the jz4760b because if some data is loaded to DRAM, then it is cached and a disaster lurks if dcaches/icache are not flushed. Targets that needs this must define CONFIG_FLUSH_CACHES in target-config.h and implement target_flush_caches(). Currently MIPS has some generic code for mips32r1 that requires to define {D,I}CACHE_SIZE and {D,I}CACHE_LINE_SIZE in target-config.h Change-Id: I5a3fc085de9445d8c8a2eb61ae4e2dc9bb6b4e8e
* hwstub: add jz4760b stubAmaury Pouly2017-01-24
| | | | | | | | The stub is quite versatile: it can be loaded using bootrom or another other means (like factory boot on Fiio X1). It relocates itself to TCSM0 and provides basic functionality (it does not recover from failed read/writes at the moment). Change-Id: Ib646a4b43fba9358d6f93f0f73a5c2e9bcd775a7
* ATJ hwstub make irq based usb driver workMarcin Bukat2016-11-10
| | | | | | | | | | | 0e2b490 introduced rework of usb driver which was broken. It was reverted in f2da975 to restore hwstub functionality on ATJ. This commit reenables usb rework AND fixes remining issues. The problem was with 0 length OUT thransfers. Additionally a few cleanups were made. Change-Id: I529ea9ad6540509e9287ca7e1cd2b44369b03cbb
* Revert "hwstub: rework usb driver for atj213x"Marcin Bukat2016-11-08
| | | | | | | | | This reverts commit 0e2b4908d012dbd45a58002774f32b64ea8f83e3. Although I swear it was tested it apparently broke hwstub on atj. I will need to investigate more whats going on. Revert for now. Change-Id: I2ff3adf8c72bb0e53be7d81b975382adfb700eab
* hwstub: rewrite and expand libraryAmaury Pouly2016-04-08
| | | | | | | | | | | | | Rewrite the hwstub library in C++, with a clean and modular design. The library was designed from the ground up to be aware of multithreading issues and to handle memory allocation nicely with shared pointers. Compared to the original library, it brings the following major features: - support for JZ boot devices, it is very easy to add support for others - support for network transparent operations (through sockets): both tcp and unix domains are support Change-Id: I75899cb9c7aa938c17ede2bb3f468e7a55d625b4
* hwstub: fix warning: no newline at end of file with newer gccMarcin Bukat2016-03-14
| | | | Change-Id: Icb4233fb9b2b0d5b6f8c4a35dff300f38c8d3025
* hwstub: rework usb driver for atj213xMarcin Bukat2016-03-14
| | | | Change-Id: I7b175103e567ae4375ff94e74ed1a06215f640c3
* hwstub: make it possible to override toolchainAmaury Pouly2015-09-29
| | | | | | | Default toolchain can be overriden using PREFIX, for example: PREFIX=arm-none-eabi- make Change-Id: I06f5ad0ad492b9f648ccba853a851918644f0500
* hwstub: implement read/write data abort recoveryAmaury Pouly2015-01-13
| | | | Change-Id: I1625873b6864584c40984723d82548ad242ee08e
* hwstub/atj213x: add clock setup to crt0.SMarcin Bukat2014-11-28
| | | | | | | Change-Id: I3b6e1b8ee1fa76396f7abe7df69af26e9599cfe9 Reviewed-on: http://gerrit.rockbox.org/1055 Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com> Tested: Marcin Bukat <marcin.bukat@gmail.com>
* hwstub/qeditor: add support for atomic read/writesMarcin Bukat2014-11-18
| | | | | | | | | | The current code assumed that READ/WRITE would produce atomic read/writes for 8/16/32-bit words, which in turned put assumption on the memcpy function. Since some memcpy implementation do not always guarantee such strong assumption, introduce two new operation READ/WRITE_ATOMIC which provide the necessary tools to do correct read and write to register in a single memory access. Change-Id: I37451bd5057bb0dcaf5a800d8aef8791c792a090
* hwstub: Add atj213x supportMarcin Bukat2014-11-05
| | | | Change-Id: Ic32200f9ab2c6977e503307a9cbe43a1328d0341
* hwstub: small fixup in rk27xx usb driverMarcin Bukat2014-09-11
| | | | Change-Id: Ibf3b91af11041834ce650f663b213bac0113f721
* hwstub: implement jump/call in stubAmaury Pouly2014-09-08
| | | | Change-Id: I876fa012c5ae1509e57f5816a8ed31dc69d62ca0
* hwstub: fix missing \nAmaury Pouly2014-09-07
| | | | Change-Id: I077a38d8a8905b7ad686d0d00b2a8a48bd206ade
* hwstub: fix horrible bugAmaury Pouly2014-09-07
| | | | Change-Id: I8042f692045a23dbb545d840e5169ce4b99fe5d2
* hwstub: don't put revision in the protocol, it's specific to the implementationAmaury Pouly2014-09-07
| | | | Change-Id: I1311a22da41fe977f1613f1e313a864baa03027c
* hwstub: remove protocol to make it use its own interfaceAmaury Pouly2014-09-07
| | | | | | This way, hwstub can be implemented along with other usb features/interfaces. Change-Id: I7148cab845049cc0a8b8e740fa0d52d3a385eaed
* Add RKW build target in rk27xx hwstubMarcin Bukat2014-06-15
| | | | Change-Id: I5ad44916bc1ac5e8a9384db2369f07b137a1a715
* hwstub: fix usb driver for rk27xxMarcin Bukat2014-06-15
| | | | Change-Id: I299e76837715c320987177eaea8459f8f199cb96
* hwstub: add proper PP supportAmaury Pouly2014-04-12
| | | | | | | | | | | - drop support for PP500x: it's very different from other PP and although it would be possible to support them, I don't have one to test the code - make sure only the CPU is started - add PP descriptor to report chip ID and revision - add code in shell and lua to support pp (no register description yet) - compile for ARMv4 because PP502x is an ARM7TDMI Change-Id: I36c4e465dfc2cfdfe7433b2f65cc8f6f0720fe62
* hwstub: fix error in config descriptor, cleanup some codeAmaury Pouly2014-04-12
| | | | Change-Id: I853340ed2c187a044726ca03ec52aed655707e27
* Add hwstub support for portal player (manufacturer mode)Amaury Pouly2014-04-07
| | | | | | | | It is very similar to how e200tool from MrH works but uses the framework of hwstub which is makes it completely trivial since we already have the USB driver written. Change-Id: I61cdc245d3f828c2682bcd6ecfed5a1cc0094139
* utils/hwstub: make stmp stub able to load in a MMU'ed environementAmaury Pouly2014-02-10
| | | | | | | | | In might be useful to load hwstub in an environment with the MMU active, in which case care must be taken on the order in which things are done. Mostly, one should not disable the MMU before moving stuff around. The code assumes the linking address (0 currently) is identity mapped. Change-Id: I8d54ce9e8cadcde2e08990353ca7a46803731ca7
* utils/hwstub: completely rework the protocol, drop unused featuresAmaury Pouly2014-02-10
| | | | | | | | | | | | | | | | | The protocol has evolved a lot during the 2.x.y lifetime, bringing more features which later got unused. This commit removes all the unused stuff and simplifies everything: - drop the feature mask: everything is mandatory or stalled on error - remove the info request and put all static information in standard USB descriptors which are part of the configuration descriptor (and can be retrieved using the standard GetDescriptor request). - remove the USB interface, we had only one anyway - remove all endpoint descriptors - remove the exit/atexit stuff, it never worked as intended anyway - update the hwstub library and make it able to handle any device - update the tools (mostly renaming and removing of code) Change-Id: I1872bba7f4177fc3891180e8f944aab88f5bde31
* hwstub/stmp: disable watchdogAmaury Pouly2013-12-13
| | | | | | | Some targets like Sony NWZ use a watchdog, so we must disable it to prevent spurious reboot when we take over Change-Id: I138a8d7f9a1b089acb2d08d7f6c4a58e8b088b3a
* hwstub/stmp: cleanupAmaury Pouly2013-12-13
| | | | | | | Conditional no longer needed since ctr0.S is private to target, also setup stack just before jumping to C code only Change-Id: I74116239be9e87bbe53e8fa814c45f04f242f1c1
* hwstub: Prepare for multi arch supportMarcin Bukat2013-12-06
| | | | | | Change-Id: Id38411ff95660e60ee23f99350b275b92b3e4578 Reviewed-on: http://gerrit.rockbox.org/690 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
* hwstub: forgot the db command file for stmpAmaury Pouly2013-12-06
| | | | Change-Id: I08ca6be221d3633c5b6e5e4b023afca33713e428
* hwstub rk27xx portMarcin Bukat2013-11-24
| | | | Change-Id: I85ac57117911544b65ccd56eb16303e30be67cab
* hwstub: use a more reasonable hclk frequencyAmaury Pouly2013-11-18
| | | | | | | The old code would set CPU to 64MHz and HCLK to 9MHz but that's too low for many things like usb and gpmi. So change HCLK to ~32MHZ. Change-Id: I6459f25900e42603333cebccb7b0ed26c59640ad
* hwstub: fix stmp3600Amaury Pouly2013-10-26
| | | | | | The microseconds register has a different address Change-Id: I29d2e7feea9eb34b0d539ee217babd092542b612
* hwstub: produce sb1 image too (for STMP3600)Amaury Pouly2013-10-26
| | | | Change-Id: Ib7f38fba1e524ed7438cdc395441d801c5eabcaa
* hwstub: don't touch mmu registers on non-STMP targets, they might not existAmaury Pouly2013-10-22
| | | | Change-Id: Ib18475fd90e0d29ab6d7214116f7a0041584d621
* imxtools/sbtools: always probe report size for HID recovery modeAmaury Pouly2013-10-09
| | | | | | | Some older versions of the ROM (TA3 for example), use a 64 byte report size instead of 1024, so hardcoding 1024 is just a bad idea. Change-Id: I720c4465cfe2f519bffa307175614bba58766dce
* hwstub: add delay functions, and plain binary/sb file generationAmaury Pouly2013-09-10
| | | | Change-Id: Idbedb9277b355edcd93975ec5a268428c7b89633
* hwstub: fix power off and reboot code on stmpAmaury Pouly2013-08-11
| | | | Change-Id: Ia717c5e6f78a2cecc6a0628e4c667ea39f32c44c
* hwstub: allow the stub to relocate itselfAmaury Pouly2013-08-11
| | | | Change-Id: Iab60c6ec0e8eda19c76c84241f8367d53cb4f87b
* hwstub: forgot fileAmaury Pouly2013-07-16
| | | | Change-Id: Ib79f4ef89c734d7ba2fcbf648aadc346576e1c17
* hwstub: enhance exit protocol and implement on stmpAmaury Pouly2013-07-16
| | | | | | | Rename STOP command to EXIT, introduce ATEXIT, this gives better control over the exit of the stub. Add stmp implementation. Change-Id: I45442c8b88b9330d12ef439417ca5ffa1520477a
* hwstub: enhance protocol with more functionsAmaury Pouly2013-07-13
| | | | Change-Id: I7944249c2f7ea3e180e7b79ee8ae402d1d0742d3
* hwstub: split target specific code from the common partAmaury Pouly2013-07-13
Completely rewrite the Mafile, properly put the usb driver in its own file and the target specific files in a subdirectory. Change-Id: Iaeee0128e021d5dad76b4d6035a63e33e2d946c1