René van Dorst
de1c707f74
tools/fileadder: fix compiler warnings
...
fileadder.c: In function ‘main’:
fileadder.c:220:16: warning: unused variable ‘len’ [-Wunused-variable]
220 | size_t len = 0;
| ^~~
fileadder.c:219:16: warning: unused variable ‘line’ [-Wunused-variable]
219 | char * line = NULL;
| ^~~~
2025-09-27 17:00:54 +02:00
René van Dorst
373d723d47
build: tools: also declutter sourcecode
2025-09-27 16:52:50 +02:00
René van Dorst
2676dbd0d6
build: install: also declutter sourcecode
2025-09-27 12:52:35 +02:00
René van Dorst
432d9d77de
build: uip: also declutter sourcecode
2025-09-27 12:52:31 +02:00
René van Dorst
0ac4792dde
build: httpd: also declutter sourcecode
2025-09-27 12:52:24 +02:00
René van Dorst
60b854550d
build: don't clutter the sources with build artifacts.
...
Tell sdcc to place it artifacts in "output/" folder.
2025-09-27 12:51:58 +02:00
René van Dorst
9f488415a8
Remove rtlplayground.mem
2025-09-27 12:21:19 +02:00
René van Dorst
2e52bcac8e
Merge pull request #20 from logicog/installer
...
WIP: Add initial installer code
2025-09-26 17:39:46 +00:00
René van Dorst
9c41ada27f
docs: SWTG024AS more IO found
2025-09-19 22:09:41 +02:00
René van Dorst
6e2b06fc27
docs: SWTG024AS: More led information found
2025-09-18 23:12:28 +02:00
René van Dorst
2eb1416ada
httpd: fix print ip-address, added missing shift.
2025-09-11 07:47:33 +02:00
René van Dorst
f148bdad20
port: fix REG_SET() compiler warning.
...
Compiler
rtl837x_port.c:466: warning 116: right shifting more than size of object changed to zero
provided value is a uint16. So shifting it more then 16 cause this error.
Solution: cast the value to uint32_t.
2025-09-11 07:36:01 +02:00
René van Dorst
8ff124af30
httpd: fix itoa_html() does not print the middle zero.
...
when the input is 100.
the first zero is not printed because t = 0 and skip printing.
So the output is "10" instead of "100".
2025-09-11 07:34:18 +02:00
René van Dorst
94ae1472c3
httpd: optimize sfr_data_to_html()
...
This also fixes a compiler warning.
page_impl.c: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
2025-09-11 07:34:16 +02:00
René van Dorst
24f588effd
httpd: Also don't byte_to_html() and itoa_html() to save 1.5kbytes.
...
Also fixed compiler "warning page_impl.c:47: warning 126: unreachable code".
But I think it was a false-positive.
2025-09-11 07:32:25 +02:00
René van Dorst
18f1fb5f1a
http: don't inline char_to_html(), save 1k of flash
2025-09-10 16:07:59 +02:00
René van Dorst
e2afa9a61c
Merge pull request #18 from vDorst/doc_SWTG024AS_v2.0_unmanaged_p2
...
fix: doc: SWTG024AS managed version can´t use RX-LOS.
2025-09-08 18:20:43 +00:00
René van Dorst
455d2e28d6
fix: isletter(), make everything lowercase.
2025-09-08 18:54:48 +02:00
René van Dorst
b2f3d44f2b
fix: doc: SWTG024AS managed version can´t use RX-LOS.
...
Added the serial header pinout.
Correction: Powerled is Systemled.
2025-09-08 18:45:20 +02:00
René van Dorst
7f9147918a
docs: SWTG024AS: remove old spreadsheet, rotate images 180° so silkscreen text is correct.
2025-09-07 23:57:04 +02:00
René van Dorst
588dbf6f83
Update SWTG024AS.md
2025-09-07 21:44:15 +00:00
René van Dorst
845a7f79bd
fix link typo
2025-09-07 23:36:42 +02:00
René van Dorst
f364f61c65
docs: Update SWTG024AS with the right gpio numbering.
...
See #16 with new gpio information, commands etc.
Added GPIO table and notes.
Also found some LEDs but need more investigation how to control them.
2025-09-07 23:32:58 +02:00
René van Dorst
7a2e568fcc
Make a helper isnumber(), replace all same patterns.
2025-09-07 17:22:13 +02:00
René van Dorst
bde8454449
isletter(): optimized version
...
Less instructions and jumps.
Saves 39 bytes.
```patch
1634,1651c1621,1628
< mov r7,a
< mov r6,a
< ; cmd_parser.c:63: return (l >= 'a' && l <= 'z') || (l >= 'A' && l <= 'Z');
< cjne r7,#0x61,00326$
< 00326$:
< mov _parse_vlan_sloc0_1_0,c
< jc 00153$
< mov a,r7
< add a,#0xff - 0x7a
< mov _parse_vlan_sloc0_1_0,c
< jnc 00149$
< 00153$:
< cjne r6,#0x41,00329$
< 00329$:
< mov _parse_vlan_sloc0_1_0,c
< jc 00132$
< mov a,r6
< add a,#0xff - 0x5a
---
> ; cmd_parser.c:66: l |= 0x20;
> ; cmd_parser.c:67: l -= 'A';
> orl a,#0x20
> ; cmd_parser.c:68: return (l <= ('Z'-'A'));
> add a,#0xbf
> add a,#0xff - 0x19
> cpl c
> ; cmd_parser.c:245: if (cmd_words_b[2] > 0 && isletter(cmd_buffer[cmd_words_b[2]])) {
1653,1654c1630
< jc 00132$
< 00149$:
---
> jnc 00132$
```
2025-09-07 17:04:46 +02:00
René van Dorst
54ab915557
cmd: reg{get,set}: more small refactor
...
Refactor some value checking.
Simplified hexvalue to addr.
Updated some comments.
Remove extra debug prints and EOL after the command.
2025-09-07 16:52:51 +02:00
René van Dorst
4cad857ad5
fix: cmd: regset: need add offset when we have less then 8 hex numbers
2025-09-07 16:33:01 +02:00
René van Dorst
1b578405c0
Remove unused and not related to GPIO define
2025-09-07 14:56:13 +02:00
René van Dorst
074c89cf27
cmd: convert reg to regget and regset.
...
We want to stick close to the origonal commands.
See: https://github.com/up-n-atom/SWTG118AS?tab=readme-ov-file#commands
2025-09-07 14:50:50 +02:00
René van Dorst
7e729c626c
cmd: add reg read and write.
...
like:
* `reg w 04`
* `reg w 04 00023678`
2025-09-07 01:03:15 +02:00
René van Dorst
e0864f811f
cmd: move gpio status to a function print_gpio_status()
2025-09-06 17:05:16 +02:00
René van Dorst
74b8280d80
gpio: SOC only has 64 gpio not 96.
...
Remove BANK_A
Rename BANK_B to GPIO_00_31
Rename BACK_C to GPIO_32_63
Added also _INPUT, _DIRECTIOn registers
2025-09-06 17:04:25 +02:00
René van Dorst
f812970ca0
docs: SWTG024AS_v2.0 document power rails.
2025-09-06 12:41:13 +02:00
René van Dorst
e6d90f7a8a
docs: SWTG024AS reword/reformat was parts
2025-09-06 12:13:53 +02:00
René van Dorst
0d63b08f89
Docs: Add SWTG024AS-v2.0-unmanaged version
...
Pinout Spreedsheet, photos and wiki about my findings.
GPIO number may be has endian problem.
2025-09-06 10:23:09 +02:00
René van Dorst
8e9cababfb
gpio: show also bit changes vs last gpio cmd
2025-09-05 00:10:18 +02:00
René van Dorst
f481d1fbe4
add cmd gpio
2025-09-04 23:49:17 +02:00
René van Dorst
71eba81421
Add rtlplaygroud.mem also exclude the file in .gitignore.
...
See PR #10 about mem usage
2025-09-02 22:25:07 +02:00
René van Dorst
001c52ef39
Use phy_modify().
...
This saves 210 bytes.
2025-09-02 22:23:02 +02:00
René van Dorst
c5995a4184
Add: phy_modify() to modify phy_registers.
...
Makes it easier to modify set/clear bit in a phy register.
Simulair like Linux PHY-core: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/phy/phy-core.c#n551
2025-09-02 22:23:02 +02:00
René van Dorst
5316ae9495
Merge pull request #8 from vDorst/feat_gitignore
...
Add .gitignore
2025-09-02 20:21:11 +00:00
René van Dorst
7bc3d2cf49
Add .gitignore
2025-09-02 10:32:40 +02:00
René van Dorst
bcf4ae316c
fix SFR_DATA_U16: must use sfr a6a7 not sfr a4a5!
2025-09-01 16:47:57 +02:00
René van Dorst
22dccbad8c
Replace phy_write_mask(0x1 with phy_write(0x00.
...
Also added define `RTL8224_PHY_ID` for RTL8224 phy_id.
So it is more clear that we want to talk to that phy.
Replaced in the function which contains `8224` in the name the
`phy_write(0x00, ...)` with `phy_write(RTL8224_PHY_ID, ...)`, same for the
`phy_read(0x00, ...)` with `phy_read(RTL8224_PHY_ID, ...)`.
Removed the extra `phy_read()` in `rtl8224_phy_enable()`.
2025-09-01 12:26:27 +02:00
René van Dorst
cc132a8734
phy_write(): also use SFR_DATA_U16 and SFR_SMI_REG_U16
...
Was added by pr#7.
2025-09-01 09:59:41 +02:00
René van Dorst
689d208ff1
phy: fix whitespace and comments alinement
2025-09-01 09:59:06 +02:00
René van Dorst
d865862625
phy: fix or/and-opperation conversion errors
2025-09-01 09:27:28 +02:00
René van Dorst
94cf079fcb
PHY: also use SFR_DATA_U16.
...
Again less error prone and easier to read.
Also see a lot of better optimalizations.
A snipped.
390c390
< ;pval Allocated to registers r3 r4
---
> ;pval Allocated to registers
838,852c838,844
< ; rtl837x_phy.c:181: pval = SFR_DATA_8 & 0xbf;
< mov r7,_SFR_DATA_8
< anl ar7,#0xbf
< ; rtl837x_phy.c:182: pval <<= 8;
< mov ar4,r7
< mov r7,#0x00
< ; rtl837x_phy.c:183: pval |= SFR_DATA_0;
< mov r2,_SFR_DATA_0
< mov r3,#0x00
< mov a,r2
< orl a,r7
< mov _phy_write_PARM_4,a
< mov a,r3
< orl a,r4
< mov (_phy_write_PARM_4 + 1),a
---
> ; rtl837x_phy.c:181: pval = SFR_DATA_U16 & 0xbfff;
> mov r4,((_SFR_DATA_U16 >> 0) & 0xFF)
> mov a,#0xbf
> anl a,((_SFR_DATA_U16 >> 8) & 0xFF)
> mov r7,a
> mov _phy_write_PARM_4,r4
> mov (_phy_write_PARM_4 + 1),r7
864c856
< mov _phy_write_PARM_3,r7
---
> mov _phy_write_PARM_3,#0x00
2025-09-01 09:25:33 +02:00
René van Dorst
b8928a8bcd
Replace manual SFR_DATA_0 and SFR_DATA_8 pair read and write with SFR_DATA_U16.
...
Also added SFR_SMI_REG_U16.
Doing pval = reg_h; pval <<= 8; pval |= reg_l; dont always optimized by the compiler a some places, not all.
A snipped of the diff between two .asm files.
5414,5424c5414,5416
< ; rtlplayground.c:1382: uint16_t pval = SFR_DATA_8;
< ; rtlplayground.c:1383: pval <<= 8;
< mov r7,_SFR_DATA_8
< mov r6,#0x00
< ; rtlplayground.c:1384: pval |= SFR_DATA_0;
< mov r4,_SFR_DATA_0
< mov r5,#0x00
< mov a,r6
< orl ar4,a
< mov a,r7
< orl ar5,a
---
> ; rtlplayground.c:1382: uint16_t pval = SFR_DATA_U16;
> mov r6,((_SFR_DATA_U16 >> 0) & 0xFF)
> mov r7,((_SFR_DATA_U16 >> 8) & 0xFF)
2025-09-01 09:20:36 +02:00
René van Dorst
9dafeab490
Added SFR_NIC_DATA_U16LE and SFR_NIC_RING_U16LE.
...
Let's use sfr16 for NIC data and ring.
SFR define can so reordered to it does the BE to LE swap for us.
2025-09-01 09:20:36 +02:00
René van Dorst
af0135bcce
Add sfr16 SFR_REG_ADDR_U16.
...
So instead do it manual split a uint16_t in to two uint8_t.
The compiler can do it, so reduces user error.
Note: compiler writes the lower/LSB part first.
When that is importent this can´t be used.
Assembly is still the same except note above.
2025-09-01 09:20:36 +02:00
René van Dorst
7ff028303d
Add phy_write() with bit_mask lookup inside the function.
...
Move the lookup saves a lot of instructions for every phy_write() call.
Assembly diff for one change.
< ; rtl837x_phy.c:240: phy_write_mask(bit_mask[port], 0x07, 0x00, 0x3200); // Enable AN
< mov dpl,r5
< mov dph,r6
---
> ; rtl837x_phy.c:240: phy_write(port, 0x07, 0x00, 0x3200); // Enable AN
> mov _phy_write_PARM_2,#0x07
1345,1359c1019,1024
< movc a,@a+dptr
< mov r5,a
< inc dptr
< clr a
< movc a,@a+dptr
< mov r6,a
< mov _phy_write_mask_PARM_2,#0x07
< clr a
< mov _phy_write_mask_PARM_3,a
< mov (_phy_write_mask_PARM_3 + 1),a
< mov _phy_write_mask_PARM_4,a
< mov (_phy_write_mask_PARM_4 + 1),#0x32
< mov dpl, r5
< mov dph, r6
< lcall _phy_write_mask
---
> mov _phy_write_PARM_3,a
> mov (_phy_write_PARM_3 + 1),a
> mov _phy_write_PARM_4,a
> mov (_phy_write_PARM_4 + 1),#0x32
> mov dpl, r7
> lcall _phy_write
Replace all phy_write_mask(bit_mask[<var>], ...) to phy phy_write(<var>, ...).
2025-09-01 00:12:12 +02:00
René van Dorst
d6ea9be4c0
rename phy_write() to phy_write_mask().
...
It seems that bit_mask[phy] lookup is expensive and it used in many places.
But most of the time we only addressing a single phy.
2025-09-01 00:07:27 +02:00
René van Dorst
3d80f73383
fix: comp. warning 283: function declarator with no prototype.
2025-08-30 22:51:19 +02:00
René van Dorst
e859769e5c
http: use python3.
...
Fix compile issue where system don't have python2.
I get error below.
/bin/sh: line 1: ./treatasm.py: cannot execute: required file not found
make[1]: *** [Makefile:15: httpd.rel] Error 127
Debian has python3 a long time so use it.
See https://wiki.debian.org/Python
2025-08-27 23:11:12 +02:00