Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer
I started writing a stupid little OS for Atmel microchips. It's very early on but I got task switching to work so it runs two tasks that just print out a number. It's a fun exercise though, I plan to flesh it out eventually and add in a scheduler and maybe some kind of basic command line shell.

It was pretty fun to put in the plumbing for libc stuff, like how stdin/stdout are directed to use your serial driver.

Adbot
ADBOT LOVES YOU

Tan Dumplord
Mar 9, 2005

by FactsAreUseless

Le0 posted:

I've been thinking about this for a little while cause well robots are fun. However I never ever did anything like that, would you have any resource, books or websites to recommend?

That depends on your level of skill with electronics and your learning pace. Make Electronics 2nd Ed is great. Make: Action then has some robotics fundamentals projects using Arduino and raspberry pi. There are a couple of drone books if that tickles your fancy.

Note: I got these in a humble bundle, and haven't used other references. They were pretty good, my wife learned from them as easily as I did, but I see that they cost real money. Many things are available online for free, but I don't know of any very high-quality sources that are easy to read and coherent.

carticket
Jun 28, 2005

white and gold.

So, because I complimented the KSDK, I had to find a problem: it doesn't support the K20 72 MHz variant.

To be honest, I have no loving clue why it isn't supported. It appears to be a subset of the 100 MHz variant. I've been able to make a "port" just by deleting.

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

Not even sure where to ask this so thought I'd try here.

We sell imported high-end commercial coffee machines from Italy, usually based on Arduino/Atmel styled hardware. The new thing they're providing is GSM modems so they'll auto-fire alerts, down times, and allow for programming OTA. What I'm not sure of, is their device is most likely specced to Europe GSM (GSM-900, EGSM/EGSM-900 and GSM-1800). Would I be able to provision a North American GSM (GSM-850/GSM-1900) network to work on that hardwar?

Hunter2 Thompson
Feb 3, 2005

Ramrod XTreme
I have no personal experience in this area but I'd bet there's a chance it's using an extended Hayes Modem command set over UART. This would make adapting it to different modem hardware pretty easy.

There may also be a chance that the manufacturer of the modem makes different models for different countries that can be dropped-in.

Get your hands on the hardware or at least get specs for the exact module or chips they're using.

Also lol@internet connected espresso machines

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

Yeah I only have a photo of the unit from the manual they sent me, but it looks like this guy:
http://www.smsco.it/tomcat/en/modem/siemens_tc35i.jsp

With a custom end on the RS232 cable that plugs into the mainboard directly.

Hunter2 Thompson
Feb 3, 2005

Ramrod XTreme
Good news, the website says that model has been discontinued and replaced with a quad-band one. I'm pretty sure that means it'll work in the US.

Also, it does use a Hayes (AT) command set according to the datasheet so I think that means you have a lot of options available.

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

Welp, got my fingers crossed, but these guys are hardly state of the art with their other stuff (to program their boards I have to use the incredibly outdated ATAVRISP MKII and an old version of AVR Studio). I think you're right on the command set though, it's all (password)(verb)=(x),(y),(z) etc.

movax
Aug 30, 2008

Le0 posted:

I've been working in embedded software for nearly 10 years in the same company but the big problem I have is that we work on a single type of CPU (Sparc for Space basically), I'd like to learn some of the stuff the cool kids use nowadays. Also because I'd like to change company in the not too distant future.
I started a course where we use FreeRTOS on an Arduino which is a good start but one of the problem I have is that I have a hard time finding ideas of project to build so I can learn stuff.
What do you guys usually build for learning purpose on a new architecture?

LEON3/4(FT)?

ARM Cortex-M4F man -- there are even radiation-tolerant variants being built. Cannot hurt to be familiar with the basic MCU core (Cortex-M0 through M4) that is in loving everything these days.

TTerrible
Jul 15, 2005

movax posted:

LEON3/4(FT)?

ARM Cortex-M4F man -- there are even radiation-tolerant variants being built. Cannot hurt to be familiar with the basic MCU core (Cortex-M0 through M4) that is in loving everything these days.

I've spent a lot of time playing with the TI Stellaris Launchpad boards. They're cheap and fun. Would recommend.

EDIT: And apparently discontinued forever ago :stare:

Another edit: Local hackspace uses the new Connected Launchpad a lot. Those also look good. http://www.ti.com/lsds/ti/tools-software/launchpads/launchpads.page

TTerrible fucked around with this message at 03:09 on Jun 23, 2017

Le0
Mar 18, 2009

Rotten investigator!

movax posted:

LEON3/4(FT)?

ARM Cortex-M4F man -- there are even radiation-tolerant variants being built. Cannot hurt to be familiar with the basic MCU core (Cortex-M0 through M4) that is in loving everything these days.

Yeah I've been working on LEON processor but we mostly have worked on LEON2 until one year ago where I've been working on our first LEON3 (GR712RC) board. Are you working with LEON CPU also?
I'd love to give ARM a try, I'll give it a look.

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

meatpotato posted:

Good news, the website says that model has been discontinued and replaced with a quad-band one. I'm pretty sure that means it'll work in the US.

Also, it does use a Hayes (AT) command set according to the datasheet so I think that means you have a lot of options available.

Yeah looks like my worrying was premature, they got me the model:
http://www.gemalto.com/m2m/solutions/modules-terminals/terminals/bgs2t

Quad-band and AT command set like you'd theorized so looks like we're good. The only downside is they're shipping with a euro 220V plug.

carticket
Jun 28, 2005

white and gold.

So, is anyone here good with infs? I had to implement CDC + Keyboard, and in trying to get it working, I had a coworker tell me "oh, I had to do that for xyz. It took me like a week to get it working on Linux, and two to get it working on Windows because of the infs". I'm in the same boat now. I was having a heck of a time with enumeration, and so I switched over to testing on my Linux laptop, which of course enumerated immediately without issue. Now I'm back on the Windows side with the device in a known working state, and I can't for the life of me figure out how to get Windows to accept my INF as a match for the virtual com port on interface 0.

EpicCodeMonkey
Feb 19, 2011

Mr. Powers posted:

So, is anyone here good with infs? I had to implement CDC + Keyboard, and in trying to get it working, I had a coworker tell me "oh, I had to do that for xyz. It took me like a week to get it working on Linux, and two to get it working on Windows because of the infs". I'm in the same boat now. I was having a heck of a time with enumeration, and so I switched over to testing on my Linux laptop, which of course enumerated immediately without issue. Now I'm back on the Windows side with the device in a known working state, and I can't for the life of me figure out how to get Windows to accept my INF as a match for the virtual com port on interface 0.

Are you using Interface Association Descriptors in the device to logically group the CDC control and data endpoints together? If so, your INF file should use _n suffixes for the product IDs to select which interface it should bind to.

Its for a different architecture, but look at https://github.com/abcminiuser/lufa/tree/master/Demos/Device/ClassDriver/VirtualSerialMouse - in particular, Descriptors.c and the INF file.

carticket
Jun 28, 2005

white and gold.

Thanks for that reference. I am using an IAD. I had tried using the _M00 on the end of the device strong, but maybe I still have something wrong. I'll check mine against this one on Monday.

travelling wave
Nov 25, 2013

TTerrible posted:

I've spent a lot of time playing with the TI Stellaris Launchpad boards. They're cheap and fun. Would recommend.

EDIT: And apparently discontinued forever ago :stare:

They renamed the line from stellaris to tiva a few years ago. I think this one is fully compatible with the original.

movax
Aug 30, 2008

Le0 posted:

Yeah I've been working on LEON processor but we mostly have worked on LEON2 until one year ago where I've been working on our first LEON3 (GR712RC) board. Are you working with LEON CPU also?
I'd love to give ARM a try, I'll give it a look.

LEON3 and 4FT, IP core and GR740, yep.

The other thing to check out could be RISC-V; as an open ISA, it could see some future development work in the fault tolerant area...

Le0
Mar 18, 2009

Rotten investigator!

movax posted:

LEON3 and 4FT, IP core and GR740, yep.

The other thing to check out could be RISC-V; as an open ISA, it could see some future development work in the fault tolerant area...

Oh nice, at what company if I may? Are you flying multi core applications? We did a little research on dual core applications in Space and honestly we didn't find much interest at ESA.
But we are a small company so that may be why.

carticket
Jun 28, 2005

white and gold.

EpicCodeMonkey posted:

Are you using Interface Association Descriptors in the device to logically group the CDC control and data endpoints together? If so, your INF file should use _n suffixes for the product IDs to select which interface it should bind to.

Its for a different architecture, but look at https://github.com/abcminiuser/lufa/tree/master/Demos/Device/ClassDriver/VirtualSerialMouse - in particular, Descriptors.c and the INF file.

Thanks for this. I was able to adapt it to work for my device.

The problem I have now is that there is an inordinate amount of traffic on the bus when I look with an analyzer. No hubs in the way, but the analyzer is seeing IN packets every 8ms (my HID interrupt IN frequency) from the wrong address and random endpoints. I am guessing it's a USB controller config issue, but it wasn't happening before. The real reason this is an issue is that I can't actually open the CDC side in a terminal on Windows and the analyzer buffer is filling with the INs.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
The agony of building physical products: We had an ongoing issue with our bluetooth stack (an NRF52 that we communicate with in "serialization" mode, for those of you who've worked with it before). After a week of looking we narrowed it down to a specific device errata that has a workaround in the current software version for the device - but we're on software two major versions and multiple years out of date, and we want to ship this thing now, we can't spend a bunch of time updating this. No problem, we say, at least we'll add a bootloader to the NRF52 chip so we can do field upgrades (no, we did not have this capability before. This startup had some turnover recently.).Great! I did it and gave it to my boss and he said "oh make sure this can handle the case where the NRF52 chip doesn't have a bootloader on it because we've been running production for the past week and there's a couple thousand units already welded together."

:negative:

Hunter2 Thompson
Feb 3, 2005

Ramrod XTreme
Can I ask which errata?

Good luck finding some buffer overflow vulnerability so you can inject your boot loader ;)

carticket
Jun 28, 2005

white and gold.

Bad example code is bad. The composite CDC + HID device that I was working on previously had some issues. On Linux (before I got the INF sorted), I always had some issues trying to open the tty in minicom, but after a few tries it eventually worked. Once it was enumerating and installing a driver properly in Windows, I tried opening the COM in TeraTerm and... nothing. I had to break out the USB analyzer again and found that the host was spamming one byte of data at EP 0 OUT, to which the device would NAK repeatedly. This was filling up the trace buffer ridiculously fast.

Well, digging down into the trace, I finally located the start of the 1 byte spam, and it was after a SET_REPORT setup packet (HID, not Chapter 9). It turns out that the NXP example HID keyboard code has a report descriptor that includes an LED output (most real keyboards have this). The catch was that the example code didn't have an interrupt OUT EP for the HID, so it uses the SET_REPORT setup packet on EP 0 OUT. This wouldn't be a problem, except that the example code was not setup to handle these requests at all, and just returned an error to the USB stack if a SET_REPORT request came in, which caused the stack to not setup to receive data, which caused it to NAK any data sent to it, which caused Windows (not as much of an issue on Linux) to keep attempting to cram that one byte of LED bits into the endpoint that just doesn't want it.

Once I removed the output section from the HID report descriptor (after learning how HID report descriptors are constructred), the COM port worked fine. There is still a lot of traffic with the host polling 3 IN endpoints, but I don't know how much I can actually do about that, and the functions I need work, so I'm leaving that as-is.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man

meatpotato posted:

Can I ask which errata?

Good luck finding some buffer overflow vulnerability so you can inject your boot loader ;)

#109 from this guy: http://infocenter.nordicsemi.com/pdf/nRF52832_Rev_1_Errata_v1.3.pdf Basically, the first byte of any DMA-driven SPI transaction might be corrupt depending on some timing issues related to waking up from sleep. This is pretty bad in general but in particular when in serialization mode where the only thing the code on the NRF52 does is translate SPI traffic into soft device calls.

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
I did it, I made a cmake build system for our poo poo that 1) still works in our garbage eclipse variant 2) works cross platform 3) doesn't require said eclipse variant. hardware for a build server is on the way and it'll be a bit easier to build in tests now! And I don't have to use eclipse anymore! And me and my coworker are taking the time to go through and fix the ~250 build warnings! Things can get better!

nielsm
Jun 1, 2009



I want to disassemble a ROM for an auxillary keypad I bought, because I'm not really satisfied with the features the manufacturer provides.
The product, the MCU it uses (LPC1343, armv7), and a firmware image is included in the Configurator App package from their downloads page

As far as I can tell the firmware image shouldn't be scrambled in any way, since the way their configurator app works is by updating some static tables in the firmware and uploading the modified image. I've tested myself, changing some scan codes in appropriate locations, and the scan codes used are the regular USB keyboard ones.
The functionality I'm especially interested in adding is some sort of software-control of the LEDs in the device, instead of just random/static patterns, or simple flashes based on button presses. I want to be able to send a command from the host to turn on/off a LED depending on software status instead.

However, I haven't had much luck disassembling the firmware. Honestly I haven't tried with IDA yet (which is probably the best bet) because it's stupidly expensive and I'm not sure if their trial version does funny things when you install it.
onlinedisassembler.com doesn't seem to support armv7, Darm is deprecated, and its continuation in Capstone seems to produce garbage when I feed the firmware image in.
So my question is, does anyone have suggestions/pointers on how to proceed here?
Am I reading the MCU spec sheet right that it does just map the 32 KB image into 0h-8000h and begin execution at 0h on reset?
Am I right to be angry that their configurator app from 2016 is written in Visual Basic 6?

carticket
Jun 28, 2005

white and gold.

If it's USB HID, there is a mechanism built in for outputs (for a keyboard, typically caps/num/scroll lock), but you'd have to modify the descriptors and find their HID class code to add handling OUT messages (on either a HID out EP or on the control endpoint).

I have nothing useful to add other than that.

csammis
Aug 26, 2003

Mental Institution

nielsm posted:

Am I right to be angry that their configurator app from 2016 is written in Visual Basic 6?

I think "resigned" is more how I feel when I see something like that.

quote:

Am I reading the MCU spec sheet right that it does just map the 32 KB image into 0h-8000h and begin execution at 0h on reset?

Yup, that's what the spec sheet says. It also says the active interrupt vectors are stored at 0000h to 0400h but your firmware may very well remap them somewhere else (or not use interrupts).

As far as disassembly goes, Thumb-2 is not that complicated an instruction set :v: Grab a Thumb-2 opcode manual and a programming reference for that chip that shows where the system registers are mapped then go to town!

yippee cahier
Mar 28, 2005

Anti-tamper features seemed interesting when I was messing around with the RTC in an STM32. Is the basic idea that the device is given some token during manufacturing which persists throughout the product's life with a battery backup and that the tamper detection system can help brick or disable functionality on the device if someone attempts to open the case, screw with the microcontroller, etc.? Why are there features like timestamping the tamper event and not erasing the sensitive information? Just because it comes for free when it lives in the RTC block? Can these systems be useful without a battery backup?

Vendors mention payment terminals as an application, but do the terminals have a hand in anything other than relaying information between the credit card's chip and the payment processor's network? Where's the trust issue where you'd want to make sure someone didn't modify the terminal? Just in basic stuff like reporting the correct total on the display for the user to review prior to authorizing the transaction?

Just curious about a different area of the industry than what I work with.

iospace
Jan 19, 2038


Bumping this to say I'm in an intro to microcontrollers class. A class that I should be able to test out of if I could but I can't. And we're using Freescale chips.

:suicide:

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS
Good ole HCS12

They must have donated a poo poo ton of money to all of the schools in North America

FlapYoJacks
Feb 12, 2009
Quallcom now buddy. Formally NXP formally Freescale. :colbert:

Edit*
Formally Motorola

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS

ratbert90 posted:

Quallcom now buddy. Formally NXP formally Freescale. :colbert:

Edit*
Formally Motorola

Formerly

BattleMaster
Aug 14, 2000

I love it when you can take a guess at how someone talks based on their misspellings

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man
I'm using a kinetis at work. It's fine. Processorexpert is so drastically not fine that with the primary bringup done we've killed it and started just editing its hal manually. Plus side: it's dead. Minus side: doing any far reaching changes like adding more clock configs would require editing its heinous auto generated code. Guess I didn't need those 5 mA anyway

FlapYoJacks
Feb 12, 2009

ante posted:

Formerly

Yeah!

FlapYoJacks fucked around with this message at 03:17 on Sep 27, 2017

Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer

iospace posted:

Bumping this to say I'm in an intro to microcontrollers class. A class that I should be able to test out of if I could but I can't. And we're using Freescale chips.

:suicide:

gently caress Code Warrior and Processor Expert. Are they still using that?

Why every intro to microcontrollers/embedded class doesn't use Atmel is beyond me. They are cheap, have great documentation and everyone in the hobby world uses them so you can find a ton of support online.

Here is my hot take of the day. gently caress every other micro, always use an Atmel.

iospace
Jan 19, 2038


Yes, code warrior. Jokes on them, I edit in vim and only compile in that.

ante
Apr 9, 2005

SUNSHINE AND RAINBOWS

Popete posted:

gently caress Code Warrior and Processor Expert. Are they still using that?

Why every intro to microcontrollers/embedded class doesn't use Atmel is beyond me. They are cheap, have great documentation and everyone in the hobby world uses them so you can find a ton of support online.

Here is my hot take of the day. gently caress every other micro, always use an Atmel.

ST is the rising star, gently caress Atmel

Luigi Thirty
Apr 30, 2006

Emergency confection port.

They still make CodeWarrior? Christ, I used that to program 68K Macs.

Adbot
ADBOT LOVES YOU

iospace
Jan 19, 2038


It's free to use, but it doesn't change that it's poo poo.

  • Locked thread