Free PDK is an open sourced and independently created tool-chain for the Padauk 8-Bit Microcontrollers, created as an alternative to the proprietary and closed tools provided by the Taiwanese company itself.

This includes the EasyPDKProg µC programmer hardware, adding support for the Padauk µCs to the SDCC C-Compiler, as well as comprehensive documentation of the instruction set architecture, and code examples.

The main focus is on supporting µCs of two Padauk series:

Padauk µCs are extremely inexpensive, priced as low as $0.03/pc in volumes of 100, which is why they generated a lot of interest after being featured by Dave from the EEVblog (first video and a bunch of follow-up videos). Despite the low price, it was found that the Padauk µCs sport an interesting architecture that can be a seen as a significant and meaningful extension of the Microchip PIC architecture. There is an extensive and active discussion on the EEVblog forum for this project and further discussion here on µC.net (German).

This page provides an overview of the different sub-projects created in the free-pdk GitHub organization. It also provides custom pinout diagrams for some of the Padauk µCs.

:link: Easy PDK Programmer

Image of the Programmer

Padauk µCs are programmed via a proprietary high-voltage protocol. The protocol was reverse engineered and a fully open source programmer that already supports almost two dozen Padauk µCs has been created. All sources for the programmer are available at:

:link: SDCC-based Open Source Tool-Chain

Padauk’s own tool-chain is based on a custom programming language called “Mini-C” with a syntax based on the C-language. This language is only supported by their own tool-chain, including IDE (“Padauk Developer Studio”) and programmer (“Writer”). The tool-chain also uses a custom binary format with encryption/obfuscation. Should you be interested in code samples in that custom language, take a look at free-pdk/fppa-code-examples.

The open source tool-chain is based on the Small Device C-Compiler (SDCC) and therefore does support Standard C and common binary output formats (intel hex and bin), including those used by the Easy PDK Programmer.

Please note that right now there is no interchangeability between both tool-chains. Binaries generated by SDCC cannot be written by the official Padauk programmer, but only by the Easy PDK Programmer.

Padauk µCs use different kinds of instruction sets: 13, 14, 15, or 16 bit (more information on these instruction sets can be found below). Support for the 14 and 15 bit Padauk instruction sets has been added to SDCC, a C compiler for small devices. Support for the 13 bit Padauk instruction set is being worked on.

Helpful SDCC resources:

:link: Installing SDCC

The latest binaries and sources of SDCC can be obtained on the SDCC website. If SDCC is available via your operating system’s package manager, please ensure that it is at least SDCC 4.0.0; older versions may not have support or only limited support for the Padauk µC.

:link: µC-specific Information and Pinouts

Note: Other µCs than the µCs listed here may be supported. If you want to learn more about the naming scheme, read more here.

:link: MTP (Flash) Variants

MCU OSS Status Arch. max IO ROM RAM Timers PWM CMP ADC Special Padauk Links
PFS154 Supported PDK14 14

2 KW

128 T16
T2 T3
2x 8‑Bit
3x 11‑Bit
1 LCD Product Page
Datasheet
PFS172 Supported PDK14 14

2 KW

128 T16
T2 T3
2x 8‑Bit 1 8‑Bit Product Page
Datasheet
PFS173 Supported PDK15 18

3 KW

256 T16
T2 T3
2x 8‑Bit
3x 11‑Bit
1 8‑Bit LCD Product Page
Datasheet

:link: OTP Variants

MCU OSS Status Arch. max IO ROM RAM Timers PWM CMP ADC Special Padauk Links
PMS150C Supported PDK13 6

1 KW

64 T16
T2
1x 8‑Bit 1 - Product Page
Datasheet
PMS15A Supported PDK13 6

0.5 KW
 (1 KW *)

64 T16
T2
1x 8‑Bit 1 - Product Page
Datasheet
PMS152 Supported PDK14 14

1.25 KW

80 T16
T2
1x 8‑Bit
3x 11‑Bit
1 - Product Page
Datasheet
PMS154C Supported PDK14 14

2 KW

128 T16
T2 T3
2x 8‑Bit
3x 11‑Bit
1 LCD Product Page
Datasheet
PMS171B Supported PDK14 14

1.5 KW

96 T16
 T2 T3
2x 8‑Bit 1 8‑Bit - Product Page
Datasheet

:link: Evaluation Boards

These are evaluation boards for the online-programmable MTP (as opposed to the OTP parts, which can only be programmed offline and once) Padauk µC. free-pdk/f-eval-boards.

:link: Instruction Sets, Opcodes, and Programming Sequence

The different Padauk µCs use either 13, 14, 15, or 16 bit instruction sets. The following files provide an overview over the different instruction sets.

More information, including information on the programming sequence, can be found at free-pdk/fppa-pdk-documentation

:link: Other Tools

  • Schematic Symbols: A collection of schematic symbols for many of the Padauk µCs.
  • Padauk µC Emulator written in VHDL: This project aims to provide a fully functional, timing accurate VHDL model for simulating PADAUK FPPA microcontrollers. free-pdk/fppa-pdk-emulator-vhdl
  • A bunch more tools are located at free-pdk/fppa-pdk-tools.
    • Disassembler: dispdk supports 13 bit, 14 bit, 15 bit and 16 bit opcodes
    • Emulator: emupdk supports 14 bit opcodes, no peripheral support yet requires mapping of processor ID in emucpu.c
    • PDK converter: depdk convert/deobfuscate any PDK file to binary

:link: Projects from the Community

These projects are auto-populated once per day by searching GitHub for repositories with the padauk topic. Projects that additionally have the free-pdk topic are highlighted as Uses Free PDK toolchain. Projects that contain .PRE files are marked as Uses proprietary toolchain.

:link: Latest Activity

The latest activity in the free-pdk GitHub organization is fetched at least once per day and displayed below.

avatar image

@cpldcpu commented on pull request free-pdk/easy-pdk-programmer-software#75
Added .gitignore to ignore binary files
Does make sense.


avatar image
@cpldcpu pushed to free-pdk/easy-pdk-programmer-software
  • b99c6a9 Added .gitignore to ignore binary files
  • c63d96d Merge pull request #75 from JShabtai/addGitIgnore

    Added .gitignore to ignore binary files

avatar image

@cpldcpu commented on pull request free-pdk/free-pdk-examples#12
Added SleepWake example
Nice, thank you! Merged!

Btw, there is also this example, possibly I should add it as well:
https://cpldcpu.wordpress.com/2021/02/07/ultra-low-power-led-flasher/


avatar image
@cpldcpu pushed to free-pdk/free-pdk-examples
  • 5689a8d Added SleepWake example
  • b05d435 Merge pull request #12 from JShabtai/addSleepWake

    Added SleepWake example

avatar image

@spth commented on issue free-pdk/easy-pdk-programmer-lite-hardware#2
Pcb , schematic files
https://github.com/free-pdk/easy-pdk-programmer-lite-hardware/tree/master/EasyEDA


avatar image

@spth commented on issue free-pdk/easy-pdk-programmer-hardware#29
Pcb , schematic file
https://github.com/free-pdk/easy-pdk-programmer-hardware/tree/master/easyeda


avatar image
@spth pushed to free-pdk/sdcc-pdk-code-examples
  • e087044 Port examples to more devices (by datasheets only, not yet tested on hardware).

avatar image
@spth pushed to free-pdk/fppa-pdk-documentation

avatar image

@spth commented on issue free-pdk/f-eval-boards#6
A board for 24-pin SOIC devices
We'll need symbols for them:
https://github.com/free-pdk/pdk-gschem-symbols/issues/5


avatar image
@spth pushed to free-pdk/f-eval-boards
  • 5648c6c Update table for PGS134 and PGS152.

avatar image
@spth pushed to free-pdk/f-eval-boards
  • 5625409 Update table for PFC460, PFS132 and PFS252.

avatar image
@spth pushed to free-pdk/f-eval-boards
  • 2feee96 Update table for PFS122 and PFS123.

avatar image
@spth pushed to free-pdk/easy-pdk-programmer-software
  • c26098f Use write timeout for write command

    Writing to "larger" devices can fail with the non-obvious "ERROR:
    Write failed." because the read timeout is applied to the write
    command.
  • 5d11e24 Increase write timeout to 4s

    PFC161 has 4KiB flash; this takes a while to write. On a new chip
    writing takes about 2.8s. To be on the safe side we bump the timeout
    to 4s.
  • 85f5a7b Merge pull request #68 from silbe/fix-large-flash-write

    Fix writing devices with 4KiB flash
    I've checked that this indeed fixes writing the whole flash on PFC161 for me.

avatar image
@spth pushed to free-pdk/free-pdk-examples
  • 9f73847 Made startup code compatible with old and new versions of SDCC
  • 913d4a1 Added comment for startup macro
  • 82a6731 Merge pull request #11 from JShabtai/sdccStartupFunction

    Made startup code compatible with old and new versions of SDCC

avatar image

@spth commented on issue free-pdk/easy-pdk-programmer-software#71
Integrating the PFS132
If you have access to the original Padauk programmer (where are you located?), use an oscilloscope to see what happens when programming the PFS132?


avatar image

@spth commented on issue free-pdk/easy-pdk-programmer-software#69
PFS132 support
> * why not use the original programmer?

The original Padauk programmer is neither free nor cheap, but bulky instead. easypdkprog ic small, free and relatively cheap.

> * Project here looks unmaintained

Not much activity recently, but I guess it could be revived.

> * Budget seems low (effort high for just one chip)

Kind of. But once you implement support for one chip, the experience should help with adding support for more (there are open feature requests for support for many more chips).

> * one needs the original programmer and software, the open-source programmer and the PFS132 (and possibly some other chips for reference).

Depending on location, others working on Padauk support could be willing to provide these.


avatar image
@spth pushed to free-pdk/fppa-pdk-documentation
  • 74750d8 Add new PMC152E and PMS160 devices.