 So I'll start and I'll make actually just a quick introduction to two things the sysmo octim and atmel start and Yes, atmel is not dead by far. So How does it start it how I've already presented osmo ram sim and the idea of osmo ram sim is to connect lots of sim cards to lots of modems now you have you need somehow to come to have lots of sim cards and They are not a lot of devices which actually support lots of sim cards. They are sim boxes, but they are very expensive They are not easy to find and they are always having a proprietary protocol So it's not very convenient. So if you have 32 sim cards or so on particularly because there is USB standard code USB CCID which supports which actually defines how to talk to smart cards or sim cards and Using just one USB device you can have up to 200 128 smart cards. So why not use this one? So we looked around how I looked around to find if there are such devices with 128 sim cards using the USB CCID profile and there is none The most we could find is actually this device which has five card slots. So these are actually behind a cover you have three here then you have one here and one on the side and That's the most we could find with using the USB CCID profile and even this one isn't very good because if you look at the CCID profile it tells you a lot about what the capabilities for example So here the interface class tells you it's CCID But afterwards it tells you which voltages to support only five volts Although you can have 1.8 volt 3 volts the protocol the clock you can have lots of clocks up to 20 megahertz So from 4 to 20 megahertz this only supports 4 megahertz and then the board rate the maximum board rate is 300 bits per second With sim cards you can go up to 3.4 megabits per second And the last thing which isn't ideal is here this max busy slots is one So this means that you can only talk to one sub card at a time and actually it is Multiplexing the interfaces you cannot talk to several at a time. So if you want now to have 128 You always have to multiplex to between all of them so because we didn't find anything which is capable of Breeding a lot of sim cards. They decided so sysmo come decided to build a device Which is called the sysmo oct sim and the oct in oct sim Stands for eight card slots, and it's the idea. So it's a USB device which implements the CCID protocol So everything which like PCSC tool, which is able to to read smart cards can use this device It has eight card slots They are not multiplex so you can talk to all of them at the same time To support all the voltages you can have high bit rates We didn't test up to very high bit rates But should be capable and most importantly it must be stackable. So if you want more than just eight card slots you can stack the Sysmo oct sim and then you can have even more even just over this one USB CCID maybe This is not implemented yet, but these were the ideas and these were the requirements for the sysmo oct sim Now we need to find some kind of microcontroller which is able to hand to have Eight sim card slots without multiplexing. So eight sim card devices and you talk with two smart cards using the iso 7816 protocol and This is very very similar to you are so what you do in the beginning whenever you design a product you go through all the Manufacturers of microcontroller you go through the product finder the parametric search and you start searching Who has eight you are so here the idea was to click USB device and as soon as you click USB device on the STM on the ST micro Controller website you only see that the most they could support is for use art So already there. There is no STM microcontroller supporting eight you out with USB Same for an XP actually it supports you can see eight or nine new art But only two of them support the iso protocol Even on the high high end ones so no an XP and then we landed on microchip microchip Which already still both at male and there we found one There's actually several of them and This is still an at mal because you see AT in the beginning so microchip both at male But they're still selling the at man microcontrollers and is I think they will keep the brand for a long time and not and Keep the separation between the picks for microchip and they are at male. So whenever you see at male in the beginning It is microchip, but you think the brand of at male and even the new ones So the microcontrollers you see here actually knew they are not produced by the x at male Which has been bought by microcontroller, but really microcontroller designed them and then the some series is just that Cortex microcontrollers and so we decided to pick this one Because this is the only one which is able to speak with eight sim cards at the time You could also have FPGAs, but we don't want to design our own core We want to take a microcontroller, which is capable of of doing game with Yeah, yeah, the other solution if you really wants to have a lot more sim cards would really be to have FPGAs and design your own core But that's not the part we took So this is the octim and this is how it looks like so you can see so this is the microcontroller we use it's a sam e 54 With eight slots you can see four on top, which is the daughter board And then if you look on the side you can also see the other ones So the idea is to have plug-and-play so we can insert and inject them all the time With all the requirements. So here you have USB you can have a USB over here Here you have a canvas where you could act not this one This is the canvas where you can actually stack the devices and here the footprint Which is not there is an internet bus if you want to connect it over internet But for for now this is just not a prototype because it is working But the software is not there We can connect over USB and talk to the sim card, but it's not USB CC righty ready the device is not being sold yet That would be the idea, but that's not implemented now, but that that that that that that that's the goal Yeah, so you use the canvas with two megabits to talk to all all the other one and then you have one USB bus of Yeah, we're recording so you can use this mic So you said That you wanted to use high speed I think or is it is high speed or full speed this controller It's full speed. Yes only full speed. Okay question answered. Yeah So this device doesn't work so you cannot play with it yet But if you still want to to play with the atmel I can recommend this development board by atmel It's quite packed. So it has the same chip and I we started developing on it There's a typo in their documentation, but it's the sam e 40 54 Which supports internet. That's why there is a e instead of the D And yeah, it has everything. We need the chip here. It has a quad SPI flash It has internet. It has the card interface that USB. It has micro sd slots lots of Ios And then two neat things that they are is it has an embedded debugger embedded flasher This is the USB debug you see here And also you can do power measurements real low power measurements because it has a second micro controller which is just there to actually let you measure how much power it consumes and For 70 euros, I think it's a pretty good development board and it's almost the only development board which support these chips so we started with this one and The problem with this is that Before when you never wanted to develop with atmel you could use the atmel studio 7 Which uses the asf 3 library which supports all the microcontroller and provided you with a high Abstraction layer for the for the microcontroller with all the code needed the problem is that with this new series by micro chip This microcontroller is not is not supported by atmel studio and actually all the new ones are not supported anymore by atmel studio That's a shame instead what they decided to do is create a new IDE Which is called atmel start with a new library Which is the asf 4 which is a rewrite complete rewrite of the asf 3 But the asf 4 is only available on the atmel start website IDE. It's not available on the atmel Atmel studio anymore and the idea of this talk somehow is just to tell you how the new microcontroller works and how atmel start works So you don't waste time Understanding how how it works because this is the only on the only alternative there is to develop on these microcontrollers Yeah, if you don't want to do everything there, I'll show you a bit of alternative afterwards, but the idea if you want to use a Library which is supported. This is the only solution you have so Here This is how the website is so there is no online offline ID anymore. Everything is online You can for example here. We will have and you can see it's pretty slow here. We can start with Looking at the examples and they have a lot of example codes, which is actually not bad And I have to say that the code is okay. There's still a lot of smart card. Sorry. The code is okay There are still a lot of bugs because it's a bit new but The third the support is not bad and here you can already set which board you want to to put on it for this Example code then it loads everything like in ID, but everything is web-based And this will have some some other problems first. You see it's it's damn slow and this is almost the fastest part So this is how once it finished loading routing everything. This is how it looks like So you have the dashboard which allows you to add the peripherals So for example here We only have one smart card which uses the disk driver to use that driver But if you want you can add a lot of other drivers So you have even middlewares you can have the dark the can and so on So this is how you add your components and once you add them you can configure the basic things the basic things on on this page The other part which is quite important on this new microcontrollers is the clocking system They have a huge number of clocks and every device can take a clock from almost anywhere So on the left side you have the clock sources or the clock oscillators which are actually creating the clocks and you can already see you have six clock oscillators just for one microcontrollers and Once you selected them you feed them into what they call generic clock generator and this allows you to Subdivide or to create other references for example. You only want You only you're creating a hundred megahertz clock for the mic for the core But not all the peripherals can be run at hundred megahertz So you have to provide the device the other clocks here This is what you see here the main device is running at twelve megahertz and now the smart card com Which is the use art is running at three megahertz And it also has a say another clock so you You do this here So one of the problems also is that they are trying to be intelligent somehow and for example if I use this digital phase loop and I say I want to use a source for the PLL the oscillator it will Tell me that this is not possible because Close here clock reference oscillator Close here there is this this warning sign It will tell you that you cannot use this clock because it is above two megahertz and the maximum clock You can use for this PLL is two megahertz now you do have a setting for the clock divider here So if you use two it Which is power of two it's slow enough the problem is that the IDE doesn't know this clock divider doesn't interpret it And not only that because there is this warning you cannot export your project So you cannot have the code which is working theoretically out of this IDE and compile it yourself so a lot of things is you have to Do whatever works and then change locally and You you it's rare that you have the sync between the configuration which is on the website and the actual codes because of lots of these small mistakes because the Start website is not complete yet. You can still file tickets and I filed a ticket with that Three months ago four months ago. It's still not not fixed But this is one of them so then you have also the pinmux which where you can select all the pins what they do Which you see from almost new IDEs and then here on the right once it's loaded you have all the output So this is nice for a start. So yeah, what is the format of exported data? Is it this is what I will show you now? So and and finally because it's an IDE you don't have these tabs you can hear click on view code And yeah, you have to wait until you can view the code because it's generating a preview So the code is existing, but it's generating the preview Oh, yeah, the configuration is wrong. So I have to fix that. So even that's a Yep disabled this Now you should be able to view the code. Yeah, and you see it's always this you just Click one thing you have to wait 30 seconds for one thing and then you you start to preview So I think the idea of Atmel start is really just you have to use this website to start But as soon as as you can go out of it, so just just take world the Base configuration and do everything yourself and there you have the code and it's it's not bad The badly done the code which you don't know So this is where you go to export project and on the export project You can see you can export the code for Atmel studio But at my studio doesn't have the library itself It's just that you can compile it on the Atmel studio and all the other compilers which you have even GCC so you have a make file and will download it so we again have to wait until generate the code and At some point we will have downloaded it See download Yeah, now it's finished on zip So it's a it's called 80 zip or 80 something, but it's just a zip file with all the information which is in there Smart card. Yeah smart and I might you don't know 80 zip. Yeah, it's just a zip file which contains the configuration and and the code itself Smart Yeah, but but yeah, it's then you just go into GCC and Surprisingly just type make and it works. So the make file is not badly done I didn't try the other the other compiling environments But at least you can download the code just type make if you have the non arm non AIB compiler And it works out of the box and then you can you can flash it you think the embedded debugger from from the thing So it's not bad and the code is not bad But you have to use the atmel start to start another pain point So this is atmel start another pain point is that you cannot download all the ASF for libraries for all the components every time you add With atmel start Every time you add on the dashboard a software It will add the code for this library into your archive But there is no way to come to download the complete ASF for library with all the peripherals Yes and no this is the this is another point the problem is that you don't really know which one it's so so you have if you The problem is you can only add if you have the peripheral for it on your chip and then there are several Different drivers for the peripheral So you don't have on one chip enough peripheral that you can add all the codes all the different drivers for all the combinations You can yeah, yeah, you can automate so they will I'll talk about that later But yeah the idea is so but just to tell that the idea is that you just add your code and you cannot download everything the other problem Yeah, the other problem is then when you take your project back You are you want to add now a new peripheral because you're extending it you have to download you have to load your configuration file And then add the new driver. Yeah. Ah, yeah I'll show it here. It's CD Vim 8 atmel start dot 8. No, how is it called again? There is an 80 starts file somewhere in here and Vim atmel start dot 80 star Yeah, atmel start config So this is actually Corresponding to what you are configured on the on on the interface It doesn't have to to match to your code actually, but this is what's on the interface So what I do is a cheat very often. I put something on here, but in the code. It's a bit different But this is what gets so if you want to add a new peripheral You have to load your atmel start back on this interface again add the peripheral and then Re-export it the problem is that it's not always backwards compatible So whenever you have your atmel start it first forces you to use the new library So when you export it exports with all the new libraries So whatever you changed or if you wanted to use something different, it's completely screwed And also it's not always backward compatible. So at one point I wasn't able to load my configuration anymore I had to create everything back again Or I had to cheat with the atmel start because they they changed something So don't expect if if they do retry it But don't expect that in three years your same project will be able to be loaded on there Without fixing by hand or without reading the manuals and so on so pain point But just just be warned. So about automating it. Yes, somebody already automates So there's a github Adafruit ASF for which actually just uploads the configuration download the code And this is exactly what I'm using to actually have version control on this is a for and do whatever it is because they don't They probably have version control on the back end, but you see nothing out of it The only thing you can see here Load it, please if you go to help and support Now here version Here you see the version which you are using and then you have a changelog, but that's all they give you as information So now I'm monitoring this page to see whenever there's a version change And then I'm uploading to get all the code for at least my microcontrollers I didn't automate it for all the microcontrollers, but at least for my microcontrollers I can see okay. This is the new library. They added this this this is the other code So this is one of the small tricks now you can also Get bypass completely ADSF for library and if you're hardcore and probably not a bad idea I was just to take the datasheet you have all the it's quite well documented You have all the registers what they mean and they actually provide you with The same CMSIS library. This is for the Cortex M family You have the definitions for the core and what they call the device family pack Which is actually the definition for all the registers for this microcontroller. This is what you see Again here This is When you export project, this is what you see the device pack information This is what you see here So you have to download these two things and then you have the definitions for all the peripherals You don't have any functions and so on but at least you have the definitions and then you do everything by hand yourself This is maybe a bit more stable or an alternative To at my start, but if you want to use the ISF for library you're forced to use at my start to the web IDE and Here back here Yeah, and other things also this microcontroller doesn't come with a bootloader There is no bootloader in the ROM the only way and there is no JTAG anymore They only have serial wire debug with the two pins and you have to flash it with this So I recommend to buy one of these cheap $2 ST-Link V2 which are just SVD microcontrollers because they also have an STM32F 103 so it's a cheap development board even if you want to play with STM devices and you can flash as with the with it Because there is no bootloader Which was previously Samba on all the previous Atmel ships we decided to make our own For the sysmo octim, but that is you can generate for a lot of what is an ISF for and this is the Just go on on the git from osmo.com It's Osmo SF for the FU and this is a USB DFU bootloader as we do as we do for almost all of the products where you can flash your code using Standard DFU tool and you can even lock the DFU bootloader in the microcontroller itself But by default there is no bootloader Which is a bit surprising and Now yeah, now you're ready. You can completely develop on Atmel start You know how to use it the documentation is not bad If you go on the Atmel start website, you just have to wait forever always to to get some information because it's a bit slow and That's it any questions Yeah, why I don't know why It's like No comments Yeah, so I mean this this is probably it's not necessarily related to the development to doing but I'm interested in what's going on with this Idea of the web IDE, you know, and I'm also just not noticing that you know when you when you switch back to that tab You have this delay Why is it doing that like is there it's JavaScript? It just takes yeah, it's just takes forever to run on a decent machine So there's processing going on Locally, yeah, most of the things are locally except when you add When you add new drivers it loads it on the back end But most of the things are done locally. So they'll the code generation and that stuff is being done Locally on no no the code generation. You still have to download from the website. Okay, so this and I'm also Wondering did you happen to read any terms and conditions or anything when you started using this or what are they doing like are they I'm just I'm wondering where this is going in the industry like are they they're obviously logging everything that you do and and What like you know this is this this I have this sort of concern from the privacy and I put my privacy kind of hat on and surveillance capitalism stuff thinking like Why is a company wanting to know absolutely everything that you do or might want to do with their hardware? Or why would they why would they start doing this in the web and rather than just allowing you to download and IDE and do it Locally and do your own business on your own hardware. I have no idea. Maybe because it's web and it's fancy I didn't read the terms and conditions No, you don't need to be logged in so you can do everything offline and I don't I don't know if they How much they log I just read the terms and conditions for the code itself So it just tells you you whatever you don't know you are allowed to use it as much as much as you want and Distributed as long as you use it for microchip devices, but who wants to use this thing for other than microchip devices Yeah, and then there is the definitions for the the CMC's and the Apache codes the STD library So there are different licenses, but it is compatible with open source So you can release it without problem then afterwards what they do in the back end how much they look no idea I wouldn't necessarily have too much conspiracy theory about it I just thought they probably were thinking what is the easiest way for somebody to create or to to build an example project And I would assume that this is sort of the the the reason why Because I mean you don't need to install something you don't and then you have to worry about all the different operating systems and variations and and things and so I think it's really just To to lower the entrance barrier to get some working code on on the devices and the name start also Sort of implies I mean it's to get you started It's not that this is going to be your you know an IDE where you really do your development It's just to generate some examples and some some reference from which you then can do your actual development But then they could still make the full library available You which is just because I mean that they have this tool to you know help you get lead blinking fine Okay, but it still be nice if you could or even if the example project included the full as a for download Yeah, I mean that's just I think The usual problem with companies doing hardware is that they have absolutely zero clue about how to do proper software development And I don't I don't I'm not aware of any I mean please educate me if I'm wrong I don't know of any microcontroller vendor that would like have their Driver reference whatever code just in publicly available git repositories including the entire change history I think the only one who did that was XMOS and they stopped doing it a couple of years ago There are a couple of Chinese ones which are also doing it for example New photo everything is on their git and you can track all the different things. So you're saying there is hope that Once Chinese microcontroller vendors become more prevalent that finally we will have proper revision control That that would be sad for the Western companies, but I would say they deserve it if that's the the course of events I Yeah, see you cannot download your own version. So really the only way You Yeah, I do it only locally I didn't publish anything because yeah, it's just easy and I don't want to mess around but Yeah, the if you have if some driver is broken on their thing then it's and you are forced to use the new one It's it's it's good that you still have a backup. No, that's why I'm also doing it in the end We certainly didn't choose that microcontroller because of this at my start and if no and if necessary we would have just you know done everything from scratch But I think the controller itself is actually rather or this family of new controllers is rather nice to work with I also actually like the fact that it's Romless and you don't have to work around some buggy ROM loader That doesn't work reliable or whatever So you can just have your own without having to have two bootloaders training Which is what we did in the past that there is like the the the Samba internal loader and then we have another bootloader for DFU and then we have our application So we can just skip the initial state of some some strange ROM loader that makes Assumptions about how you do your board that are not documented and so on And I said, yeah, I think the trip is rather nice to work with So yeah, and and also I think actually sure there are bugs Kevin had struggled a bit with some USB stack bugs in the ASF for code but apart and of course there's lots of layers of abstraction But actually I think in terms of the API is it's rather nice to use and there's not always but there's oxygen Documentation in the source code So it's not too bad In terms of the actual code that is generated. Hmm. Yeah, I agree the micro trip The micro controller is not bad. The library is not bad. It's just that there is this Kind of ID where which you have to know and which you have to to take on you if you want to start with this project Well, thanks