I was looking at writing, from scratch, firmware for an early trunk-tracking hand-held. If I remember correctly, the CPU was WinBond and the units were mass produced with a mask for programming. No field updates.
Identifying the CPU is certainly first. Next is a complete schematic of the hardware. Are there peripherals (like display controller or USB?) and get spec sheets for each of those. This is embedded code, something I usually write in assembly unless it has a great C compiler. If you plan to "update" existing SDS models, you need to seriously look at the boot loader and what's required for the update process to function. Heck, they attempted to keep GRE and Radio Shack code from being interchanged on models which were virtually identical.
Just developing code from scratch that interacts with each IC in the design, and can be uploaded to existing h/w is a huge hurdle. Then add code to make the radio work.