Hi Steve,
Apologies for delay in response. Do you have still this issue is open?
Yes, you understanding is correct, "the SHARC's compiler does not allow data sizes smaller than the addressable unit size on the processor". The SHARC uses a standard 32-bit data-type, so even with your typdef to unsigned short or char the data is a 32-bit data type. This is covered in the "C/C++ Compiler Manual for SHARC Processors", you can have a look into the "Data Type and Data Type Sizes" section described in this manual.
So when you taking look at your project, I can see that the only lower 8-bit data is shifted to the FIFO, so you got the pattern as 0B 70 00 AB.. instead of 0A 0B FF 70 00 AB.., as it is expected. Hence for the proper working, if the memory is not a concern, I would suggest you to have a buffer where store the lower 8 bit data and then store higher 8-bit data consecutively. However, if memory is a concern, another suggestion would be to pack the required data into 32 fashion and abstract each 8-bit data accordingly while sending.
Please let me know if you have further doubts/queries
Regards,
Jithul