Latest Entries »

At my home, I have a Raspberry Pi 3 connected to my amplifier. This Pi is running a PulseAudio Server. This way, I can send the audio output from any machines in my network. At least, machines that are running Linux (or other *NIX).

I have attached a HDMI monitor to my Pi. This monitor has also audio support. However, I want the output to go to the analogue output as that is where the amplifier is connected. Furthermore, my home network is both IPv4 and IPv6.

First, I disable the auto detect for audio hardware, and replace it with a manual specification, so it will output at the analogue output rather then the HDMI,

#### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
#### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif

# Force PulseAudio to use analogue audio
load-module module-alsa-card device_id=1

To enable the server, I load the module-native-protocol-tcp. With the auth-ip-acl I set the access control list to allow only connection from my network. auth-anonymous=1 allows anonymous authentication, which disabled the need for sharing cookies. Finally, I add list=0.0.0.0, this makes sure it only listens on IPv4 addresses, as otherwise the raspberry pi server will show up twice in the network.
Publishing in the network is done with the module-zeroconf-publish module.

# Adding listen=0.0.0.0 to force it IPv4 only, otherwise it will use both IPv4 and IPv6 and it appears twice
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1 listen=0.0.0.0  
load-module module-zeroconf-publish

The title says it, this is all about installing ArchLinuxARM on Le Potato, a Single Board Computer by Libre Computer. Well… what can I say. I’ve got ArchLinux booting, but I’m not happy with the results yet. The thing is, I wanted to build my own U-Boot and create a package of it, and that’s the part still failing…

So, for what I’ve got now, I’ve downloaded an image of theirs (A Debian image), and replaced the partitions with my own. That way, I’ve got their U-boot build, booting the kernel I provided. It boots, so that’s fine. However… I want to be able to create an U-Boot build of my own, and be able to install it as a package. No luck with that.

First, I guess, I’ll note down the steps to create a bootable TF (aka micro SD) card for the thing. I have the bootloader fail using a 2 GB TF card, but with two different 8 GB cards these instructions create a bootable card.

Requirements: wget, uboot-tools

Create a file boot.txt with the following contant:

setenv fdtfile amlogic/meson-gxl-s905x-libretech-cc.dtb 
setenv distro_bootpart 2
setenv devtype mmc

test -n "${distro_bootpart}" || setenv distro_bootpart 1
part uuid ${devtype} ${devnum}:${distro_bootpart} uuid
setenv bootargs "console=ttyAML0,115200n8 root=PARTUUID=${uuid} rw rootwait earlycon"

if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /boot/Image; then
  if load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then
    if load ${devtype} ${devnum}:${distro_bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      booti ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi
mkimage -A arm -O linux -T script -C none -n "U-Boot boot script" -d boot.txt boot.scr
wget http://share.loverpi.com/board/libre-computer-project/libre-computer-board-aml-s905x-cc/image/debian/libre-computer-aml-s905x-cc-debian-stretch-headless-4.19.55%2B-2019-06-24.zip
unzip libre-computer-aml-s905x-cc-debian-stretch-headless-4.19.55%2B-2019-06-24.zip
wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
su
dd if=libre-computer-aml-s905x-cc-debian-stretch-headless-4.19.55+-2019-06-24.img of=/dev/mmcblk0 bs=1M count=2
fdisk /dev/mmcblk0

Type “o” to create a new MSDOS partition table
Type “n” to create a new partiton
Type “p” for primary
Type “1” for number 1
Press “Enter” for the default start
Type “+100M” for a 100 MiB partition size
— If you are prompted to delete a signature, say yes
Type “t” to change the type
Type “C” to set the type to FAT32
Type “n” to create a new parition
Press “Enter” a couple of times to accept the defaults
— If you are prompted to delete a signature, say yes
Type “w” to write the changes

mkfs.fat /dev/mmcblk0p1
mkfs.ext4 -O ^metadata_csum,^64bit /dev/mmcblk0p2
mkdir /tmp/boot
mkdir /tmp/root
mount /dev/mmcblk0p1 /tmp/boot
mount /dev/mmcblk0p2 /tmp/root
bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /tmp/root
cp boot.* /tmp/boot
umount /tmp/root
umount /tmp/boot
sync
exit

Connect a USB-TTL-UART to the TTL pins (next to the UART connector) and open it using for example PuTTY at 115200 bps
Apply power to the board using the micro USB connector.

The board should boot into ArchLinuxARM.


Now… although this works… I still wish to be able to build my own u-boot.
Since this board is Amlogic based, I’d figure I’d start at an Amlogic board already supported, the Odroid C2.
I have not succeeded in this. I will write about my attempts another time.

So after the hard disk failure, well, I’ve spend some time getting my system up and running again. This wasn’t too much work as I have a working system on a USB stick, however, this stick isn’t fully configured. One of the problem I ran into was my PulseAudio server. I use a raspberry pi connected to my audio system. So I use a remote PulseAudio server, and I ran into the problem, that when I play a video, the video stopped as soon as I selected the remote audio. The sound played fine though. It turned out to the caused by the fact my installation was missing an NTP daemon. Playing audio on a remote system requires the clock to be synchronised to calculate the audio lag.

So, I’ve fixed the bugs again I was working on before the hard disk crashed, and recreated the ws2812 demo. So the libraries and demos on my github should work now.

Here we are again, another year has finished. And I? What have I done? I haven’t been posting here the past year. Blogging seems not to be part of my routine any more. There are several reasons for this, but maybe it is not the incident a few years ago that made me drop the habit, maybe it is also, just the fact I’m not a student any more. Having a job means having less time at hand, and as such, also having less time to write in my blog. But maybe it is also the incident. Maybe it is also that I no longer publicly share what is on my mind.

It is not entirely true that I have no longer been blogging, as I have been, on my other blog. But there I discuss matters of technology. My projects, and stuff. I guess, that’s stuff that used to go here, so maybe, not much has changed after all.

So, the year 2019 is running towards an end. What has happened in the past year. In November, my work, Manus VR, moved to Geldrop. The company is growing, outgrowing its startup phase, so that’s all good. I’ve seen colleagues come and go. Mostly come, but some also left, including some who were around in the early days before I joined the company, and in that sense, I’m one of the old guys around.

What else is there to say about 2019? The usual, I guess, my yearly festivals, Castlefest and Midwinter fair. Is that all there is to say about the past year?  I guess… that is what growing older means. Work from 9 to 5 and have no time or energy left for other things.

What I mean, when looking back, I don’t look back much on the past year. What is there to say about the past year? I have difficulties to point out significant events in the past year, things that stick out, things worth mentioning when looking back on the past year. When I look back, these days, I look back at a bigger timescale. My life, my choices and things that just happened to me. How did I end up here? Is this still where I want to be? Or is it time to move on?

I am here… living in Eindhoven. I’ve moved here in 2010 to study. When I moved here, I had the idea to study in this city, and then move back to Limburg. But then in 2011 I changed my mind. I made some new friends, and I decided to stay. I joined some group wanting to start an urban farming project. And so Beginhoven began. It was a nice project, and it was nice hanging out with my friends in the garden. However, lately I’ve been thinking, it is not my place to be. I’m considering leaving the project. I’m going to find myself again. Looking at my own values, not at the values of those around me. That also implies that I might take distance from some people who have developed in an opposite way than me, in such a way our values are no longer compatible. I guess, what I am saying, I guess it is time for change. New people in my life.

I guess, it also means, looking for what is important to me. What my passion is about. And that’s not really in gardening. I guess, I’ll still try to grow some tomatoes on my balcony. So far I didn’t have that much success. I guess my balcony doesn’t get enough sun as the tomatoes weren’t ripe yet at the end of summer. But, I guess I’ll focus more on technology. Going back to, who I would have become if I didn’t take this detour. It’s not a bad thing to take a detour, that’s not what I am saying, but what I am saying, I’ll need to consider what is really me. A part of self reflection and cutting out the parts that are not me any more.

And I have changed over the past decade. I must admit I have been having silly ideas in the past. Ideas I’ve shed. I’ve never been a religious person, but nowadays I consider myself a full atheist, while in the past I went with agnostic and spiritual. I guess that’s a thing of the past now. To quote Nietzsche “Gott ist tot.”

Looking at the world… what has happened in 2019. Still no Brexit, but it is coming. In 2020, there will be elections in the USA again. Will Trump get another term, or will the Americans realise what he really is? Oh… the world… what the fuck is happening? It’s not only Trump or Brexit… it is the anti-vaxxers, it is the anti-GMO, it is the anti-5G,  it is the climate deniers, the flat-earthers and all the other crazy nutters who think they know better then scientists. If climate change won’t destroy our civilisation, it will destroy itself with all those crazy ideas spreading. I have said before, every great civilisation of the past has fallen, the Egyptians, the Romans, the Mayas, and our faith will be no different. But looking at the world today, one might think it has already begun. — Oh well, I shouldn’t be too pessimistic. A few rotten apples won’t destroy our civilisation just like that. We’re still going forwards. Look where we came from, and where we are today. We have come so far, and we’re still going forwards.

The future is bright. At least, it can be, if our society focuses on the right things. This means, we should seriously consider nuclear energy if we wish to cut dependence on fissile fuels. Wind and solar alone just won’t cut it. We should consider GMO crops. To combat malnutrition (golden rice), to fight malaria, to be able to grow food as the climate changes. But also, to cure hereditary disease, or even disease like aids and cancer. Shall I put it differently, how ethical is it, that an ethics commission is still discussing whether we should consider GMO while people are dying? All I am saying, don’t be afraid for new technologies. Don’t believe in conspiracy theories telling you they’re out there making up new technologies to kill you. Just think about it, there are cheaper and more effective ways to kill someone.

Welcome to the 2020s. Welcome to a new decade. The year 2020 doesn’t sound as magical as the year 2000, but yet, a new decade. What has the future is store for us? We’ll see soon enough. Happy New Year!

I’ve been working on some embedded projects. I’ve uploaded some USB code and example projects the other day, as well as some ws2812 code. I wrote some demos for the ws2812 code this morning, and in the afternoon I started working on some code to generate alphanumerical serial numbers based on the microcontroller’s serial number. Basically, some code I’ve written in the past, cleaning it up and preparing it for release. The serial number generation code worked fine, but I discovered by USB code still got some bugs. I thought I’d tested it the other day and found it working when I released it. So, I was debugging some code, fixed some bugs, and then my hard disk died without warning. There have been no SMART warnings, nothing. It just died out of the blue. The previous hard disk that failed at least gave prior warning it was about to fail.

I’ve bought this hard disk in November 2017, and the web shop where I bought it only gives 24 months of warranty. So I thought I was out of luck, and I went to the Mediamarkt to buy a replacement. As this was the second hard disk to fail on me in this laptop, I thought an SSD might be more reliable. In the past I’ve been reluctant to get an SSD because of the limited write cycles. But I guess SSDs have proven themselves it is not an issue. So, I bought an SSD at Mediamarkt. When I asked about the warranty, they told me it was 2 years from them, and a third year from the manufacturer. This gave me the idea to check at Seagate, and it seems there is still warranty on that hard disk. So I could get a replacement. (but I already got an SSD now)

But still… the data is gone. Not more then a day of work on the current code, but there was still some more old code I was planning to go through and see what is worth for release.

I wonder if it is actually the disk that died or the controller. The symptoms, it is not responsive on the SATA bus. The dmesg is telling it failed to reset, and gives up after three attempts. So I suspect the controller died. When I still assumed it was out of warranty, I went to look on eBay for replacements for the board. There are some broken (as-in SMART errors/bad sectors) disks to salvage the PCB from, for US$ 30 delivered. I was considering trying to revive the disks with a replacement PCB before I discovered there is still warranty on the disk. But now I can get a new disk. So now I have to make a choice. The data ain’t that interesting I guess… but neither is a new hard disk as I already replaced it.

I just logged in here, and I realised I have an unpublished/unfinished port that was supposed to go out at new year’.

Well… the past years I’m been blogging less and less. Reasons for this, some event from a few years ago. However, regardless that reason, blogging is no longer part of my routine.

What I wanted to announce, I’ve been working on some new project, and I’ll publish about it on https://www.blaatschaap.be (for now, I might move it elsewhere later, still trying to figure out what’s the best place)

It’s all about microcontrollers now

December 2019: I found I hadn’t posted this one yet… it seems kinda unfinished…. but whatever, this is what I wrote a year ago about the year before:


Our rock has completed another lap around the sun, time to look back. I realise, I haven’t posted anything since the last looking back. I guess, I’m a bit out of this blogging thing. I usually don’t do new year’s resolutions, but I guess, this year it should be to be blogging some more.

2018… the year has passed. It began quite awful, when a good friend of mine was killed in a car accident. Ellen, you’re gone from our lives, but you’re still in our minds. Rest in Peace.

Looking back on what I wrote last year, my phone. I still don’t use a smart phone, but I am not using the phone I wrote about last year. Feature Phones sold today are kinda crippled, so I’ve discovered. This new Nokia Phone can not connect to the Nokia PC Suite or any other software. I’ve bought a Nokia 6300 at a flea market. A 10 year old model, that works perfectly. This thing only costed me 5 euros, and it works just fine. A battery life no smart phone can compete with, and that on a, presumably, 10 year old battery. Take that!

What else is there to write about the past 12 months? I’m still working at Manus VR. The company is growing, we claimed another office. Also for my work at Manus, we now have our Embedded department with our own office. I must say, quite an improvement. I’d say it looks good at Manus.

Of course, I’m still doing some freelance jobs as well. I’ve been working on a project regarding Bluetooth Mesh, for example. Following this project, I started a research on other wireless technologies. I will be posting something about this soon. Resolutions, right, posting some more. However, I’ve decided to post them elsewhere. I’ve decided to use the https://www.blaatschaap.be domain for this. I mean, it has been “parked” for a while. And I believe one of the factors causing me not to blog so often is that tech-related-posts and personal posts intertwined on the same blog might be a bit messy. So, I might reblog some of my tech-articles that live on here on that yet-to-come site.

Ah… the internet, and its addicting social networking sites. Yes? Suppose I’ve said some words about that last year. But the question, then, what else would I do with my laptop? Well. I’ve been looking at some forums about electronics, such as eevblog. They’ve got a youtube channel with some interesting videos and stuff. Furthermore, I’ve been busy figuring out how KiCad works, and I’ve been drawing several schematics and pcb layouts.

I’ve been looking for nRF52832 modules at eBay and AliExpress. There are several modules out there. One day a new manufacturer appeared. They were cheaper, and their module has a metal casing. They also had an easy to find website and email support. This was eByte, a Chinese rf module manufacturer. They’re listing several modules based on other rf microcontrollers. I’m make a series of breakout modules for their modules to play around with. I might even sell some of my breakout board if things turn out well.

 

 

As we have finished another lap around the sun. The year is coming to an end. Looking at my blog, I’ve realised I skipped my looking back on 2016 and 2015. That’s a lot of looking back to do, and I suppose I might mix some things up.

So, the past year, what has happened. To those who haven’t yet realised. I’ve ditched my smart phone. I have been an early adaptor regarding Android Smart Phones. Back in the days I’ve bought the Google G1, the first Android smart phone. I was intrigued by the idea of a phone running a Linux kernel. Nevertheless, I’ve come to the decision I do wish to use a smart phone no longer. First of all, such a smart phone is a power hungry device, requiring to be charged quite often. As such, I do not regard it as a reliable means of communication. Furthermore, such a smart phone is a source of distraction.

Speaking of distraction, another thing I have been avoiding the past few months is Facebook. Another source of distraction, scrolling endlessly through fake news and other nonsense. I haven’t cancelled my Facebook account, I might look at it from time to time, but I’ve removed Facebook from my daily routine. And damn, Facebook is an addictive bitch. I logged in to post some Christmas wishes, and before I knew it I found myself scrolling for a few miles.

The above means I am no longer reachable on Whatsapp, and messages on Facebook messenger might take a month or longer to get a response. If you need me, send an email or call me.

Well… as I mentioned above, it seems I’ve got some catching up to do. When did I graduate again? Hmm… that was in 2014, so I’ve written about getting my Master’s Degree and Philosophy Certificate. So… after graduating, what’s next? In 2015 I took a sabbatical. A year to figure out what do to next. Being a student, life was quite simple, go to class, study, pass exam, and repeat. Quite clear what is expected from me. But after that, what to do next? I didn’t feel like working in a big company, I didn’t feel like being another cog in the machine. I wanted to be in a place where I could make a difference. I wanted to do something important. But where was that place? What was I looking for? I knew what I did not want, but what alternatives are there, that I did not know.

In my search, I’ve met some individuals who wanted to begin a restaurant. But why would some people starting a restaurant be relevant to someone who just got a degree in Computer Science? Well… there were some plans, ordering with tablets, which allow customising the menu, allowing for guests to enter allergies or other ingredients they want to avoid, or to include, where the tablet would show dishes to match these queries. That is where I came in. Unfortunately, this project never came into existence. The restaurant opened its doors with a traditional paper menu, and unfortunately was forced to close its doors due bankruptcy.

So, when it became clear the tablet based menus were not coming soon, I started to think of alternatives. I’ve decided to become self-employed. And as such, my company name would be “The IT Philosopher”. That name fits my education, right?

But well, a company needs customers, right? Well… I’ve been providing website hosting to some people, so I turned those people into my first customers. But well, hosting a few website doesn’t generate enough money, I needed to get more customers. Soon I found a company in need of my services as a software developer. I worked on a project for Manus VR, updating their SDK. And after finishing that project, I was asked for another project within that company. And when another project came up, I became employed by that company. So, I am working part-time for Manus VR, and doing some other projects for my own company.

The next things are kinda difficult to write. How to find the right words to express these things. I’ve lost two friends. In 2016, Derrel died of cancer. It all happened so quick. I mean, like I was told he was ill on a Friday, and then, even before this news could sink in, he already died. Derrel, who was he? A poet, a trouble maker, and what else. Oh… Derrel… A couple of years ago, I’ve dated him, well… only for a week or so, I mean, we weren’t exactly a match, but still. Even though it didn’t work between us, I am under the impression that I did have a good influence on him.

And then, last year, I’ve lost another friend. Joyce died while giving birth to her child. It’s not imaginable something like that can happen in the 21st century, but yet, it happened. I mean… how is such thing possible? I’ve known her since 2001. She was the friend I’ve known for the longest time, a long friendship that was. And I’ve been one of the first people who she told she was pregnant, even before her parent knew. I mean… wow. And then, this evening she called me, telling me the child was coming. And then, the next thing, when her boyfriend called me, I assumed to tell me he became a dad, he told me Joyce died. It’s so… unreal… It’s so something you’d expect to happen in 1917 and not in 2017. It’s so unreal…

So.. in the past two years, I’ve buried two of my exes. I mean… can you imagine such a thing? Yet… and me… who I was, and who I am. I think I have become much stronger then I ever was. In some way, at least. These events didn’t seem to have a big impact on my happiness. And I suppose, some of you might know, I haven’t always been this emotionally stable. But now, it seems even losing people important to me can’t bring me down.

Yet, there are things I need to watch for. I need to take care of myself, in the sense that I need to ensure I get enough rest. There was an instance the past year, I didn’t rest enough, almost resulting in a burn-out. Oh… it’s difficult to rest when people are counting on you, on your work. When you feel like you need to finish stuff people are waiting for. I suppose I need to learn when to say “no”. That’s something that’s never easy.

Some of my recent thoughts, yeah, the philosopher inside me is alive. On certain corners of the social media, you’ll find post telling you to love yourself, there are corners of the internet where depressed teenagers say they hate themselves. But what is this “self”. I mean, I know what it means to love someone, I know what it means to hate someone. But the self-to-self relationship is something that puzzles me. I do not relate to myself the same way I relate to anything else in the universe. Therefore, something that has a clear meaning when it indicates a relationship between a subject and an object, doesn’t make much sense to me when the subject becomes objectified. Or, I should rephrase that, there is no “self” as an entity. I do not exist on my own. I always exist in a relationship to the something else. I exist in a situation, I exist in a social context, I exist in a relationship to other people. I cannot exist without context. That means, I can say I like or dislike the situation I’ve created by my actions, but this is always in relation between me and others. So, basically, the self, is not an entity, but it is about relationships between entities.

There are some more questions playing around in my mind. Something about identity, about the individual and the collective, about mythology, about religion. But I suppose that’s for the next time.

Happy new year, my friends!

 

 

Merry Christmas, God Jul, Fröhlichen Weihnachten, Vrolijk Kerstfeest!

We have celebrated Midwinter last Thursday,
The light is returning to us, the nights will be shorter, the days longer.
The light is returning. The darkness is retreating. Let’s celebrate!

I would like to tell you about the various microcontrollers out there. There are many out there, and I can impossibly describe them all. However, I will point out some interesting ones, especially for hobby projects, which also means, affordable. Quite a while ago I wrote about the Teensy 2.0. This is an Atmel ATMega32u4 based microcontroller. This board is available for US$ 16.00 at the official store. For a single board, this is still affordable but if you want a bunch of them, it’s getting costly. So, I went looking on eBay for ATMega32u4 boards. Results show up, starting at US$ 2.15 (at least, today… back then… I don’t know what the price was) Well… it’s an Arduino Pro Mini clone. I’ve never looked at the Arduino platform, not then, not now. But don’t mind the Arduino in the title, it’s just an ATMega32u4 soldered to a board. But this gave me the idea to search for Arduino in stead, leading me to Arduino Mini Pro boards. These are ATMega328p chips soldered to a board. They start at US$ 1.86 at eBay and US$ US $1.50 at AliExpess.

Now… let’s have a look at the hardware. Both microcontrollers are part of the Atmel AVR family. This is an 8 bit microcontroller. The first time I came in contact with this family of microcontrollers was during my education at Fontys University of Applied Science. I did a project involving an AT90USB1287 microcontroller. This project involved USB communication, controlling an KS108 based LCD display, and passing data to an FPGA. This project is also the thing that made me distrust abstraction layers. The thing was, I’ve implemented the KS108 display, working as a charm, then I added the USB support, using a library provided by Atmel, and the display stopped working, the timing was way off. This all happened many years ago, 2008 or something, I don’t know. But the thing is…. it messed with my timings… and that made me distrust abstraction layers, and this is the reason why I keep away from the Arduino environment. It’s not specific against Arduino, but I’m just afraid such an abstraction is doing stuff behind my back, writing to some register values I am not aware off, breaking stuff I am trying to do.

Well… let’s have a look at the hardware. For both ATMega32u4 and ATMega328p we have a core that can run at multiple speeds. It can run up to 8 MHz when powered at 3.3 Volts and up to 16 MHz when powered at 5 Volts. The boards sold at eBay are generally configured to run at 5 Volts and are equipped with a 16 MHz crystal. A divisor can be configured, thus it is possible to run the board at a lower speed, thus operation at 3.3 Volt is possible. As setting this divisor is a run time operation, it will power up at 16 MHz in default state. However, an ATMEL AVR microcontroller has so called fuses, these are configuration bits that determine the power up sequence. One of the options is to start the MCU with a divisor of 8. This will bring up the board at 2 MHz, which is fine for 3.3 Volt operation. Teensy boards ship with this option enabled by default, however boards from eBay generally come with this option disabled.

To program an ATMEL AVR microcontroller, there are several options. A chip can have a bootloader installed, allowing it to program itself. The microcontrollers from the Teensy series, which USB, come with a proprietary boot loader. However, this bootloader implements the USB DFU protocol, the bootloader protocol according to the USB specifications, allowing it to be used with standard programming tools. Back at the project at Fontys, I had a microcontroller boards directly from AVR, which shipped wit the Atmel FLIP bootloader, another proprietary bootloader, also implementing the standard DFU protocol. The ATMega32u4 microcontrollers from eBay implement some USB CDC protocol. They enumerate as a serial port, implementing an Arduino-specific protocol. (Yuck…. use the fucking standard protocols, damnit). I don’t use the Arduino enviorement, and even though avrdude (a software to program Atmel AVR chips) is supposed to implement this protocol, I haven’t been able to communicate through this USB Serial port it provides. The ATMega328p based boards, obviously, don’t offer USB support as they lack an USB port. (There are boards out there which have an USB to serial converter on boards, but I am not considering those.) When using those with my own USB-to-serial-TTL-boards, I am able to program them using avrdude and the arduino protocol I mentioned.

There is also a way to program an Atmel AVR board using an external programmer, implementing the Atmel ISP protocol. There are open source projects to turn an ATMega328p into such a programmer. An ATMega328p programming another ATMega328p, quite nice to see the programmer is equal to the device being programmed. All the projects I’ve seen so far use the Arduino environment, so, this is the one and only time I’ve used the Arduino IDE, to compile an Atmel ISP programmer. The programmer is connected to an USB-to-serial-TTL board, and then avrdude is used to program the target board. The connection between the programmer board and the target goes over the SPI pins of both boards, and uses an Atmel proprietary protocol. One thing to keep in mind, the ISP protocol only allows programming, but not debugging.

Another search on eBay lead me to STM32F103C8T6 boards. eBay sellers also mention “Arduino” in their titles, but don’t be distracted by that. We are talking about an ARM. This is a ARM Cortex-M3 microcontroller, 20 KiB RAM, 64 KiB Flash, running at 72 MHz. And these boards are selling for US$2.13 at eBay, and even less at AliExpress, US$ 1.67 at the time of writing. Dirt cheap, and free shipping, no kiddin’. I would like to add a note about free shipping when ordering at AliExpress. It seems, when ordering 3 or more, they do charge shipping costs, but 1 or 2, they don’t. So I suggest to place multiple orders at different sellers if you like to order more then two boards.

To program these boards, an SWD programmer is required. (Stricly speaking, it is not, there exists a built-in bootloader, which enables programming over a serial interface, this requiring an USB to Serial (TTL level) adaptor. I have not tried this method). For about US$2, you can get a “ST Link V2” on eBay or AliExpress. (The price is similar…. but so is the hardware, another case of the same hardware being both programmer and target)

Basically, in the same price range, we have a 16 MHz 8 bit microcontroller and a 72 MHz, 32 bit microcontroller. So, I would say, this looks definitely interesting. Another thing to keep in mind, the SWD protocol does not only allow programming, but also debugging. SWD is an industry standard protocol, meaning many debuggers are available, ranging from the $2 to professional programmers which can cost a couple of hundreds, or even over a thousand dollars. But well, I’m talking about hobby usage so let’s stick to a $2 ST-Link for now. Programming and in circuit debugging.

There is much more to say about these chips, their programming environments, their debugging environments, properties of their architectures, etc. etc. There are more architectures and chips I would like to discuss, there is more coming in follow up articles, thanks for reading so far,

cheers,

André