July 2014 Updates

Probably one of the biggest months of updates ever!

  • Added minicom page.
  • Added cat page.
  • Info on variadic macros added to Programming->Languages->C->C Preprocessor.
  • New Memory page under General Programming
  • Updated Alitum Simulation page.
  • New page on the Linux program diff.
  • New page on C variadic functions (to complement the stuff added about variadic macros)
  • New PSoC Fault Finding page.
  • New Automated Code Analysis page.
  • Git repo Code-Template-Files added
  • New Compilers section under Programming with GCC page.
  • New page, How To Properly Use FreeRTOS (as of Dec 2017, URL unavailable).
  • New pages, Naming Conventions, under Programming->General, and C Naming Conventions, under Programming->Languages->C.
  • Removed disqus ads, see this post.
  • New page, Programming->Languages->C->Standards And Versions.
  • Version Control Systems promoted to a sub-menu of Programming.
  • New commands added to the .
  • New page, Programming->Languages->C->Portabillity.
  • Updates to the Programming->Languages->C->Pointers page.
  • Added information about the C ternary operator (?) to the Programming->Languages->C->Logical Operators page. Also added information about the lack of a logical exclusive OR operator, and how to simulate one.
  • Updates to the Programming->Languages->C->Structures page regarding initialisation and object-orientated style programming.
  • Updates to the Programming->Languages->C->Enumerations page, adding info about how to change the data type of enumerations and enumeration syntax.
  • New page, Programming->Operating Systems->FreeRTOS->Common Mistakes. Added info about the main() stack getting overriden when vTaskStartScheduler() gets called.
  • PCB Design got promoted to be a sub-menu of Electronics.
  • New component package added, SOD-123F, to the Component Packages page.
  • New GitHub repo, TemplateCodeFiles, which currently contains template code for the C and C++ languages.
  • New GitHub repo, FreeRtosWrapper-Cpp. Contains wrappers to use FreeRTOS in a object-orientated C++ environment, including the ability to make a class function (a method), a task.
  • Corrected some info on the Using C++ With PSoC Creator page, and added more info about thread-safe static initialisation and virtual functions.
  • New section Methodologies under Programming. New page Inversion of Control (IoC) (as of Dec 2017, URL unavailable).
  • New page on PCB Stencils under Electronics->PCB Design. This includes information of the different etching processes as well as terminology such as aperture size and aspect ratio.
  • Updated to the RingBuff-Cpp GitHub repo.
  • Updates to the Microcontroller IDE Comparison page relating to AVR Studio.
  • New page on PCB Castellation.

January 2014 Updates

First off, Happy New Year!

It’s been a busy month around here! Most updates have been to the C++ and C language sections, as well as the new Linux->Programs section. Here are all the updates this month…

How To Use C++ With PSoC Creator

Ever wanted to write C++ for the PSoC 5 or 5LP chips in PSoC Creator?

Well, although PSoC Creator doesn’t natively support it, you can quite easily do a few ‘hacks’, and you’ll be writing in C++ in no time.

A new page “Using C++ With PSoC Creator“, under Programming->PSoC, explains the steps required to compile C++ code in Cypress’s PSoC Creator.

It covers the four main steps:

1) Compiling with G++ rather than GCC using custom compiler flags

psoc-creator-build-settings-command-line-custom-flags Adding custom command line flags in PSoC Creator to force GCC to use the C++ compiler.

2) Wrapping C code with guards

extern C{< C code goes here>}

3) Defining the operators new and delete (this is optional)

void* operator new(size_t size)

4) Prevent Exception Functionality

Preventing exception functionality to prevent linker errors such as “undefined reference to __gxx_personality_v0” and “undefined reference to __cxa_end_cleanup” (again, this is optional, and only applied if you want to use new and delete)

cplusplus-linker-error-undefined-reference-to-gxx-personality Add the custom compile flag "-fno-exceptions" to every .cpp file you want to compile in PSoC Creator to prevent the "undefined reference to __gxx_personality_v0" linker error.

The steps have pictures and code examples to help you through the process.

Checkout the page here.

Playing Around With The Kinect

I got excited about 3D modelling and brought a Microsoft Kinect a few weeks ago. I choose to get the ‘PC’ version, even though it was $100+ more than the Xbox version, purely because it was touted that Microsoft engineers had worked had at making it better for hacking, and it had more features such as ‘Close Up’ mode (I’m beginning to regret this decision, see below).

Anyway, I installed the Microsoft SDK/drivers and within minutes I had a development platform in action for the Kinect. I wrote a small program in Visual C# Express using the provided API, and following this tutorial, got a cool depth image of my room (‘cool’ being relative, this was the first day I had started playing with it).

However, Microsoft puts a restriction on it’s SDK, saying that the software must run on a PC running Windows. One thought in the back of my head was to one day make it run on an embedded linux system, so I had a crack at getting the 3rd party open-source drivers working. This involved many hours of messing around installing multiple programs in different orders, then trying different versions, and then trying to compile the drivers with a make command. It reminded me of the driver issues you used to get with Windows 95, and after about 5 hours I gave up.

I’m thinking that problems were arising because I was using the PC version rather than the Xbox version, which didn’t have as much support. And it turns out I don’t really need the extra features in the PC version for the 3D modelling applications I had in mind. Hmph…

ATmega Code Examples Added, C Programming Section Added

Added ATmega code examples to the programming section as I use them while working on the electric skateboard. Also added a programming section specifically for c code.