Free PDK Documentation
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:
- M series OTP (OTP = one time programmable)
- F series MTP (MTP = multiple time programmable)
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.
Easy PDK 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:
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:
- SDCC Documentation
- Open bugs in the Padauk integration
- Feature Requests related to the Padauk integration
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.
µ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.
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 |
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 |
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 |
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.
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
Other Tools
-
Schematic Symbols: A collection of schematic symbols for many of the Padauk µCs.
- gEDA gschem: free-pdk/pdk-gschem-symbols
- KiCad: free-pdk/pdk-kicad-symbols
- 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
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.
Latest Activity
The latest activity in the free-pdk
GitHub organization is fetched at least once per day and displayed below.
@dependabot commented on pull request
free-pdk/free-pdk.github.io#67
Bump rexml from 3.2.5 to 3.3.6
Superseded by #69.
-
a3679a4
Bump activesupport from 7.0.4.3 to 7.0.7.2
Bumps [activesupport](https://github.com/rails/rails) from 7.0.4.3 to 7.0.7.2.
- [Release notes](https://github.com/rails/rails/releases)
- [Changelog](https://github.com/rails/rails/blob/v7.0.7.2/activesupport/CHANGELOG.md)
- [Commits](https://github.com/rails/rails/compare/v7.0.4.3...v7.0.7.2)
---
updated-dependencies:
- dependency-name: activesupport
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com> -
69a7734
Merge pull request #65 from free-pdk/dependabot/bundler/activesupport-7.0.7.2
Bump activesupport from 7.0.4.3 to 7.0.7.2
@cpldcpu commented on pull request
free-pdk/free-pdk.github.io#66
remove link to dead thread.
@cmfcmf
He, you are still around. Do you have any idea regarding these annoying time out errors during the build? I have been "band-aiding" a bit, but there are still spurious errors.
Checkout /doc-style for more information on some of the special Markdown formatting features we use.