Developing Wixel Apps - Question

Hello everyone,

I’m new to the wixel. It seems to have a lot of potential, but the documentation on the actual process of developing an app in the user manual leaves some questions unanswered. For background, I have experience programming in some higher-level languages (some C++, lots of MATLAB), but not much on the nitty gritty computer science stuff. Anyhow, my question primarily pertains to the hex section of the .wxl file. I’ve already studied the Wikipedia page on Intel Hex formatting, so that part makes sense, but I’m not clear on the actual hex data the file contains. I converted the data components of one of the sample programs into ASCII (after breaking down the Intel Hex) and got what appears to be gibberish, so I assume that that’s not what it is. Is there a direct conversion procedure that you run on the .c file that produces the necessary block of hex? I’m essentially at the stage where I fully understand how the .c program needs to go, but don’t know how to actually produce a .wxl file based on it.

Thanks,
Alec

Hello, Alec.

The data inside the HEX portion of a Wixel app will be written to the flash memory of the CC2511F32 when you upload it using the Wixel USB Bootloader. For a typical Wixel app, most of the data in the HEX portion will be binary instruction codes that will be executed by the CC2511F32. Different processors recognize different types of instruction codes. The CC2511F32 inside the Wixel executes 8051 (also known as MCS-51) instructions, so you have to use tools/compilers that support the 8051 architecture. The instructions are documented in the “Instruction Set Summary” section of the CC2511 datasheet.

A typical app will also store some general data in its flash memory, such as strings. If you have an ASCII string in your program then you should be able to see it in the HEX portion after converting the data in there from hex to ASCII.

More information about how the Wixel’s flash memory is organized and how the bootloader works can be found in the “The Wixel USB Bootloader” section of the Wixel user’s guide.

[quote]
Is there a direct conversion procedure that you run on the .c file that produces the necessary block of hex?[/quote]

No, the conversion process is very complicated, and should be done by a compiler like SDCC.

To convert your C program into a WXL file, I recommend following the instructions in the “Compiling an Example App” section of the Wixel User’s Guide. In particular, see the “Creating Your Own Apps” subsection at the end.

If you follow those instructions, you won’t need to know the details of what is inside the WXL file.

–David

Thanks very much for replying. I worked through the “compiling a sample” app section before, but I don’t think I properly understood what was going on. Having worked through it again, this is my new understanding of the procedure:

  1. Develop .c file and save it in a folder sharing the same name (e.g. example.c in …/wixel-sdk/apps/example
  2. Run make_all.bat, which creates all of the other necessary files (including example.wxl)
  3. The newly created example.wxl is now ready to be uploaded

Is there anything important I’m missing, or is that all there is to it?

Thanks again,
Alec

That’s right. However, you can have any number of C files inside your app, and the C file names do not have to match the folder name.

–David

As David explained, the data represented by the hex codes translates to machine language, which is what the compiler (or any language compiler) must output. It would not make any sense converted to English. However, if you embed strings in your code, such as…

char * pSomeString = "Look at This!";

your translation to English, though mostly giberish, would reveal that string intact at some point. Many compilers, in fact, put all such strings in one area.