Commit graph

931 commits

Author SHA1 Message Date
Amaury Pouly
e62203aac1 regtools: add headergen_v2
This new header generator works differently from the previous one:
- it uses the new format
- the generated macro follow a different style (see below)
- the generated macro are highly documented!
- it supports SCT-style platform or RMW-style ones

Compared to the old style, the new one generate a big set of macros per
register/field/enum (loosely related to iohw.h from Embedded C spec). The user
then calls generic (names are customizable) macros to perform operations:

reg_read(REG_A)
reg_read(REG_B(3))
reg_read_field(REG_A, FIELD_X)
reg_read_field(REG_B(3), COOL_FIELD)
reg_write(REG_A, 0x42)
reg_write_field(REG_A, FIELD_X(1), FIELD_Y(3), IRQ_V(FIQ))
reg_write_fielc(REG_B(3), COOL_FIELD_V(I_AM_COOL), BLA(42))

the following use RMW or SET/CLR variants, depending on target:
reg_set_field(REG_A, FLAG_U, FLAG_V)
reg_clr_field(REG_A, FIELD_X, FIELD_Y, IRQ)
reg_clr_field(REG_B(3), COOL_FIELD, BLA)

the following does clear followed by set, on SET/CLR targets:
reg_cs(REG_A, 0xff, 0x42)
reg_cs(REG_B(3), 0xaa, 0x55)
reg_cs_field(REG_A, FIELD_X(1), FIELD_Y(3), IRQ_V(FIQ))
reg_cs_field(REG_B(3), COOL_FIELD_V(I_AM_COOL))

The generator code is pretty long but has lots of documentation and lots of
macro names can be customized.

Change-Id: I5d6c5ec2406e58b5da11a5240c3a409a5bb5239a
2016-05-25 00:11:07 +01:00
Amaury Pouly
c90d42dcc6 jz4670_tools: add usbboot tool, tweak Makefile and packtool
Although the jz4740 contains a similar tool to usbboot, its command-line
interface is not very useful, also it does not compile by default because it
relies on some external code, and it contains code specific to some JZ4740
devices.

Change-Id: I22688238d147e21fb0fd524466b333b6003d4ff1
2016-04-08 18:54:46 +01:00
Amaury Pouly
4934bd6f24 hwstub: remove the old library
Change-Id: I94d0f67cfd0d636407cd9cf3afbe0db4064de28e
2016-04-08 18:52:36 +01:00
Amaury Pouly
5ac0166388 qeditor: port to the new hwstub library and add features
This commit adds support for the version of the hwstub library, which requires
a lot of changes. It also adds some editing features, such as register access
and much better editing of fields using the mouse (double click on a field
to be able to resize and move it).

Change-Id: I3c4e4cc855cb44911c72bc8127bad841b68efe52
2016-04-08 18:46:46 +01:00
Amaury Pouly
cc4c9b70bc regtools: add register access to soc desc
Registers (and variants) can now specify the type of access supported:
- unspecified: for variant means same as register, for register defaults R/W
- read/write
- read only
- write only
Backward compatibility is preserved by setting access to unspecified by default.

Change-Id: I3e84ae18f962a45db62f996a542d08405d05b895
2016-04-08 19:38:36 +02:00
Amaury Pouly
f6c61eb11a hwstub: port hwstub_shell to the new library
Also use this opportunity to cleanup support for multiple devices: the shell
now supports dynamic changes in the device and will call init() everytime
a new device is selected, to prepare a new environment. The shell now
honors register width on register read/write. The shell also provides access
to variants as follows by creating a subtable under the register using the
variant type in UPPER case and having the same layout as a register.
For example if register HW.GPIO.DIR has variants "set" and "clr", those can
be used like this:
HW.GPIO.DIR.SET.write(0xff)
HW.GPIO.DIR.CLR.write(0xff00)

Change-Id: I943947fa98bce875de0cba4338e8b7196a4c1165
2016-04-08 19:38:18 +02:00
Amaury Pouly
a2f4c5201d hwstub: port hwstub_load to the new library
Change-Id: I7e8ae50907401a9480a0da809a4470f1728d3a57
2016-04-08 19:37:59 +02:00
Amaury Pouly
3d8a08ca25 hwstub: rewrite and expand library
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
2016-04-08 19:37:30 +02:00
Amaury Pouly
56dc54d38a soc_desc: add default constructors to most structures
After being caught by several bugs of the type "let's forgot to initialize
a field to default value", I'm finally fixing this.

Change-Id: I01c33e0611d4f697f767db66465e4fb30858cdab
2016-04-08 18:06:27 +02:00
Marcin Bukat
bb48fa02d2 regtools: Convert rk27xx register description file to v2 format
Change-Id: I60a764567d2fc73ed87fca2a8b0eaf643d4984bc
2016-03-14 13:51:33 +01:00
Marcin Bukat
906a623698 hwstub: fix warning: no newline at end of file with newer gcc
Change-Id: Icb4233fb9b2b0d5b6f8c4a35dff300f38c8d3025
2016-03-14 12:21:42 +01:00
Marcin Bukat
0e2b4908d0 hwstub: rework usb driver for atj213x
Change-Id: I7b175103e567ae4375ff94e74ed1a06215f640c3
2016-03-14 12:21:42 +01:00
Amaury Pouly
7619031307 regtools: make description file parser stricter
The parser would simply ignore unknown elements or attributes, which is bad
on many levels. Now any unknown tag will trigger a fatal error.

Change-Id: I32eead8e96c1567241cf2a565d9e20e62877c14d
2016-02-07 15:46:06 +00:00
Amaury Pouly
7d87ebb470 regtools/desc: convert v1 stmp description files to v2
Conversion done using swiss_knife as follows:
./swiss_knife convert --author "Amaury Pouly" --version "2.4.0" desc/regs-stmp3XXX-v1.xml desc/regs-stmp3XXX.xml

Change-Id: Iad26e04f8f599cf25339a33aa65f231379434e98
2016-02-06 15:32:53 +00:00
Amaury Pouly
6e54f72590 regtools/desc: rename v1 stmp files
Change-Id: Ib66a404acf1f640e19b30b35d6a976094ae4264a
2016-02-06 15:29:38 +00:00
Amaury Pouly
6b9610fb90 regtoosl/qeditor: port to the new description format
This big commit port qeditor from v1 to v2 register file format. Although
the display code was much simplified, the edit code had to be rewritten.
The new code also brings many improvement to the register display widget.

The new code also compiles with both Qt4 and Qt5, although it is recommended
to use Qt5 to get some improvements, especially in the layout of editor.

Change-Id: I24633ac37a144f25d9e705b565654269ec9cfbd3
2016-02-06 15:20:48 +00:00
Amaury Pouly
0f701a64be regtools: update v2 specification, library and tools
A v2 register description file can now include register variants and instances
addresses can now be a list (previously it could only be a stride or a formula).
Update the library to deal with that. The convert option of swiss_knife was
updated and one incompatible change was introduce: if a v1 device has several
addresses, those are converted to a single v2 instance with list (instead of
several single instances). This should have been the behaviour from the start.
Swiss_knife can now also convert regdumps, in which case it needs to be given
both the dump and register description file. Also introduce two register
descriptions files (vsoc1000 and vsoc2000) which give more complicated examples
of v2 register description files.

Change-Id: Id9415b8363269ffaf9216abfc6dd1bd1adbfcf8d
2016-02-06 15:12:55 +00:00
Cástor Muñoz
2ae94318c6 update deploy.py to recognize and use Qt5
Change-Id: Ied8c9d153a34bd8b689a34e45708262cede5348d
2016-01-17 18:38:28 +01:00
Marcin Bukat
ad5e5c42fb hwstub: fix atj213x dsp lua code
Change-Id: I5fbd1799b958bedbe74f91bdcdd8a544e15d2a78
2015-11-17 22:40:31 +01:00
Marcin Bukat
f47f04b65f hwstub: Add ajt213x lua interface for DSP block
With this you can upload and run code on DSP core in atj213x.

The files can be produced using as2181. You can download
this assembler from https://github.com/wodz/as2181
You should use extended mode (-x switch) since DSP core
in atj is non standard and uses 24bit operands.
PX register has different meaning as well and is used as MSB
when loading other registers with immediates (immediate field
is 16bit in instruction so to set register to 24bit value
you need to store MSB in PX prior to this).

MAC MR is 56bit accordingly.

HIP interface seems to be mapped at standard addresses
(except that regular 218x doesn't have HIP).

Have a fun!

Change-Id: I9a80ca0dd3718ba8435ae8579bfffa66e067e022
2015-11-17 13:35:09 +01:00
Amaury Pouly
3fdb86ea41 qeditor: fix uninitialised variable
Change-Id: I12a785e554b7d598b91e526af1b7ebc1fc44f610
2015-10-03 23:09:35 +02:00
Amaury Pouly
bc25437448 hwstub: make it possible to override toolchain
Default toolchain can be overriden using PREFIX, for example:
PREFIX=arm-none-eabi- make

Change-Id: I06f5ad0ad492b9f648ccba853a851918644f0500
2015-09-29 22:49:02 +02:00
Amaury Pouly
1cada1f833 soc_desc: new version of the desc file format
Fix qeditor to use the old soc_desc_v1.
Port hwstub_shell to the new description format.

Change-Id: I9fefbff534bfaa5c3603bb3dd8307a2b76e88cfc
2015-09-11 16:40:19 +02:00
Amaury Pouly
c8d3638b9e qeditor: introduce new "sexy register display"
Change-Id: Ib938b4be71d2c7623851dbc3c211f96105077d7d
2015-09-11 16:02:34 +02:00
Amaury Pouly
2c832968c9 qeditor: use delegate to show bit range information
Change-Id: I314365c3a2cb9d230c412f24d2a8034a12c43444
2015-09-10 15:20:38 +02:00
Cástor Muñoz
ab3581c7ef utils/parse_testcodec.rb: add support for Opus files
Change-Id: I19e59cfe86598c2e5a7b070ef72b5a12e88b7242
2015-07-17 00:51:22 +02:00
Marcin Bukat
e70ea5d21f hwstub: Add completion and some pretty printing to the shell
This uses slightly hacked luaprompt to provide all the goodis.
See https://github.com/dpapavas/luaprompt for original.

Change-Id: Iedddb79abae5809299322bc215722dd928c35cca
2015-06-28 17:55:17 +02:00
Dominik Riebeling
8360937ac2 Append build date when building dev version from local foler.
Change-Id: I1172cb0c4910f1d49b6a5d1125a809491a5aba9c
2015-06-07 22:19:54 +02:00
Dominik Riebeling
e5320303cc Make revision handling work when building from local folder.
Change-Id: I8e6cc0eb8a5bff722bf5278ffa7685436c3d846a
2015-05-30 18:40:40 +02:00
Dominik Riebeling
5f5d7f608a Fix path creation for zip file names in current folder.
When building in the current tree (i.e. buildfolder ending up as '.') creating
the filename to use in the zip file stripped all '.' characters. Use a
different way to create the filename to avoid this.

Change-Id: I139c404d5e83a8bcb028a9a22b125f238911e405
2015-05-30 18:21:32 +02:00
Dominik Riebeling
2af2a1253c Update findversion for change version.h format.
version.h doesn't store the version number as string anymore. Update
findversion to use the individual values instead.

Change-Id: I6bf0fdd4420d41279b44cffd22b42febbfc778ce
2015-05-30 17:59:50 +02:00
Amaury Pouly
b130b50734 Add jz4760 tool
This tool can pack/unpack a jz4760 archive (like the one used for the fiio
x1/x3/x5), and can descramble/scramble (it's the same operation) a firmware
file (the sys.bin file in the archive). I did my best to keep the compatibility
with the leaked Fiio/Ingenic tool which has the same name.

I wrote the tools from scratch, but here are some remarks:
- the format used is a slightly modified IHFS used in the older JZ4640 series,
  I used the information on the wiki about the IHFS format
- the CRC computation done was already reversed engineered by someone on the
  forums but I realised this later
- There are a few unknown fields in the headers, see comments in the source code
- The firmware scrambling was discovered by pure guess, I realised there were
  some repetitve sequences, some I guessed it was a rotative XOR and ran some
  analysis to find the most probable sequence

Change-Id: Ib83735b3db8475be5de9c94231714e88668a0340
2015-03-29 14:08:28 +02:00
Marcin Bukat
0d9124fc79 qeditor: Add external static libraries to build dependecies
The solution is a bit hacky as it simply call make in libs
directory as pre-dependency. Clean doesn't touch libs.

Change-Id: Ib447a48fd87cc41228944f17444474a55d393543
2015-03-04 22:46:03 +01:00
Amaury Pouly
f5f9784ab7 Introduce a new analysis tool to detect which macros are defined in each build.
See the usage() for more information.

Change-Id: I712ef4d6bd21eccefa18cec144e35b8161ca5b3a
2015-02-16 11:31:05 +01:00
Marcin Bukat
f65baf9b0f atj213x: Fix DMAC block in description file
Change-Id: I4afc17b06f85d552248c0248e6b4b921ffc1e7a7
2015-01-23 11:03:49 +01:00
Marcin Bukat
15d4be5e9f atj213x: fix desc file errors
Catched by swiss_knife check there are some overlaping fields
and invalid characters in some names.

Change-Id: Ia26ffd2e29452f4ddd9f8229f78bb2a2cc325ab4
2015-01-22 13:38:13 +01:00
Amaury Pouly
2cdfc43f10 hwstub: implement read/write data abort recovery
Change-Id: I1625873b6864584c40984723d82548ad242ee08e
2015-01-13 23:35:33 +01:00
Thomas Jarosch
2ee2a9697a Fix crash on uninitialized variable
The WRITE() macro checks if the "fw" pointer
is open upon fwrite() error. Since fw was
not initialized before use, it might crash for non-zero fw.

cppcheck reported.
[utils/jz4740_tools/HXFreplace.c:187]: (error) Uninitialized variable: fw

Change-Id: I558170f9f17828c9fd515a5da36ad8b5cb30a9ad
2015-01-13 21:57:24 +01:00
Thomas Jarosch
a71603b4d1 Clean up bogus 'make compiler happy' code
Less code makes the compiler even happier.

Change-Id: I24cf586ba44f432b541fd17079f93dbd52314828
2015-01-12 21:13:00 +01:00
Marcin Bukat
bbd7d1dba3 regtools/headergen: Make generator more flexible
Change-Id: I2328ec021ed990a40257d4ce6f4fc5b3db2ba998
2015-01-12 11:28:52 +01:00
Thomas Jarosch
c907e127f8 jz4740 usbtool: Fix undefined behavior in set_reg()
The variable 'i' should actually be 'size'.
See the read_reg() function above it.

Confirmed via private email from Maurus Cuelenaere. Thanks!
(who also remembered having trouble reading/setting
 registers over USB back then ;))

cppcheck reported:
[rockbox/utils/jz4740_tools/jz4740_usbtool.c:281]: (error) Uninitialized variable: i

Change-Id: I0f34834335e89d2504e7597e8db22cf69b5ca7e7
2015-01-04 18:16:44 +01:00
Thomas Jarosch
89ab3c2761 Fix uninitialized variable (should fix libusb retry handling)
Reported by cppcheck

Change-Id: I5ac7b73f2e3eaee3d5427d118944613e572f684d
2015-01-04 13:35:47 +01:00
Thomas Jarosch
8f1fbd1dc8 Remove unneeded std::string .c_str() call
cppcheck reported:
[utils/zenutils/source/update_patch/main.cpp:105]: (performance) Passing the result of c_str() to a function that takes std::string as argument no. 1 is slow and redundant.

Change-Id: Ied9de135e693af22e1fdc3aa3b67d14b7d2c21e6
2015-01-04 12:33:09 +01:00
Thomas Jarosch
29ffa832fe Remove useless assignment of 'len'
The variable 'len' is not used after this statement.
Probably a copy'n'paste leftover from the similar
looking block above.

cppcheck reported:
[rockbox/utils/zenutils/source/shared/cenc.cpp:212]: (style) Same expression on both sides of '-'.

Change-Id: Ia8357187ed39d3fab10d97df75a1146c4f733790
2014-12-20 15:52:35 +01:00
Amaury Pouly
515a07e51d sb1: fix buggy comparison
cppcheck reported:
[rockbox/utils/imxtools/sbtools/sb1.c:440]: (warning) Comparison of a boolean expression with an integer other than 0 or 1.

Thanks to Thomas Jarosch

Change-Id: I0078232706d4014a1f2acea310a7a0d0edf7788b
2014-12-20 15:31:18 +01:00
Amaury Pouly
5dab768838 regtools/qeditor: use the new model, drop unused code
Change-Id: Ic4e2e201f6d055c85d52b7fe15d25980386df5b8
Reviewed-on: http://gerrit.rockbox.org/1023
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-12-15 22:57:20 +01:00
Amaury Pouly
abed208efb regtools/qeditor: introduce custom table model for reg fields
This one is much more efficient than using a generic table widget.

Change-Id: I3578964eead746e656f6b0a8dcec0f8442deb13d
Reviewed-on: http://gerrit.rockbox.org/1022
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-12-15 22:54:28 +01:00
Amaury Pouly
edaeee168d regtoosl/qeditor: remove unused code
Change-Id: I79ad3151d6a500903786b3467c271b43741f8fee
Reviewed-on: http://gerrit.rockbox.org/1021
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-12-15 22:54:20 +01:00
Amaury Pouly
88053b8832 regtools/qeditor: fix field editor not updating the validator on change
Change-Id: Ib8df47c8b7cfe0beb486e45542e3fcc9187bcc54
Reviewed-on: http://gerrit.rockbox.org/1020
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-12-15 22:54:13 +01:00
Amaury Pouly
04e798eddf regtools/qeditor: fix backend dump bug, be more correct on read
Change-Id: I581c033435f553f092b61144c4b68b05ab931dd8
Reviewed-on: http://gerrit.rockbox.org/1019
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
2014-12-15 22:54:05 +01:00