As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What is the cheap and good way to make a serial (RS232) programmer for AVR atMega and atTiny? There are several circuits in the Internet, but which one is better?
I'd like to be able to program my controller from Linux and Windows using some standard tools.
Try the Serial port AVR programmer (DASA) Kit from Adafruit Industries. It's only $7.50, is very popular with the Arduino community, and she provides step by step instructions for assembly on her personal site.
If you don't want to build it yourself, Sparkfun Electronics has several serial programmers available for a bit more money.
I've previously had good success using the (free!) Pony Programmer software and dongle.
They provide schematics for the hardware, which was simple and seemed to do the trick.
Haven't used the linux version of the software for some time but the windows version seemed to do everything that it needed to.
If usb can be used, I really don't think the original programmer (AVR ISP mkII) is that expensive, the pricing today was about 34$.
http://onlinetps.com/shop/index.php?main_page=product_info&cPath=65&products_id=188
This Serial Port AVR Programmer is a serial port dongle compatible with PonyProg and other programming software. It does not require any external power supply; it takes power from your target board. The dongle attaches to your PC via a standard DB9 serial port
Information:
This Serial Port AVR Programmer Programmer is most inexpensive AVR programmer on the market. It works with the great free AVR programming software - the Pony -Prog you can always look at the list of the supported devices on this link as it grows every month.
Supported Device
ATmega103, ATmega161, ATmega163, ATmega 323, ATmega128, ATmega8, ATmega16, ATmega8L, ATmega16L, ATmega64, ATmega32,ATmega64L, ATmega32L, ATmega162, ATmega169, ATmega8515, ATmega8535, ATtiny12, ATtiny15, ATtiny26, ATtiny2313,ATtiny13, 25, 45, 85, 261, 461
And lots more..........
You can use bitbang programming. All that you need is ftdi ft232 chip and avr-dude software.
http://easyelectronics.ru/img/readydev/FTDIBBProg/ftbb.JPG
http://www.nongnu.org/avrdude/
The Bus Pirate is one more USB option. It is actually a handy tool for a lot of (serial bus related) uses. It may not be as smooth or fast as dedicated programmers, though.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
From http://www.altdevblogaday.com/2011/08/06/demise-low-level-programmer/:
"When I started programming many of the elements we take for granted now, did not exist. There was no DirectX and not many compatible libs were available for the free compilers of the day. So I had to write my own code for most basic programs, keyboard handlers, mouse handlers, video memory accessors, rasterizers, texture mappers, blitters… the programs I wrote then were 100% my own code and I had to be able to handle anything and everything."
I am looking for advice on how to learn more about low-level programming. For example, writing a keyboard/mouse driver, a vga driver or basic function like malloc.
What is the best way to approach this? I am an undergraduate CS student and had courses about computer architecture/assembly where we wrote a simple pipelined processor in VHDL on DE0-nano FPGA. I have a decent C programming knowledge.
It seems to me difficult to learn that stuff on a modern x86 computer. Are microcontrollers better (like arduino board) ? Or FPGA (but my DE0-nano seems limited) ? Or maybe buy an old computer like Commodore 64 to learn like the people back then ?
And is there any resources like book on this subject ?
I would recommend a microcontroller approach, msp430, avr, or one of the many arms. You can get an msp430 or one of the arm launchpads from ti for about 10-20 bucks, you can find stm32 based discovery boards for 10-20 bucks as well, the stm32f0 (cortex-m0) is simple, basic. The stm32f4 is loaded with stuff like caches and an fpu, but still a microcontroller.
I think the microcontroller approach will take you back to the roots, very basic stuff, the hardware doesnt have video usually or hard drives or anything, but you do learn how to master the tools (compiler, linker, etc) and how to read the manuals, etc.
You could just fast forward to linux capable hardware like the raspberry pi or beaglebone. At all levels but in particular the linux capable levels, in addition to the manuals for the video chips, usb chips, etc you also will want to use the linux source code to learn from. Understand that the linux drivers are often very generic and often contain code to drive a whole family or whole history of hardware from one vendor, so a bunch of the code may not match anything in the manual, but some will and that is where you will get over the hump of understanding what the manual is saying. Doesnt mean you have to re-write linux in order to use this information.
Start small take it one step at a time, pcie and video alone from scratch is a major task, if you start there you are quite likely to fail unless you already have the knowledge and experience (if you did you wouldnt be here asking).
An approach you can also take is bochs or something that emulates an old 8086 DOS system, and if you can find some good, old, dos/8086 based manuals you can poke at regisiters, cga mode, vga mode, etc. The disc controllers can be difficult still, etc...
There are plenty of arm, avr, msp430, mips, etc (and x86 but I wouldnt go there for this until later) instruction set simulators that would avoid the cost of hardware and also avoid the cost of damaging the hardware and having to buy more (it happens even with lots of experience), even better writing your own instruction set simulator...vba some nds simulators, working your way up to qemu.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I want to design LOW COST embedded systems that need significant compute power, for example real time HD video compression.
For someone with experience in PIC and Atmel architectures, but no ARM or Linux experience, what is the best path to a "powerful" embedded system?
By powerful I mean >=32 bit processor with a clock rate of >=500MHZ and lots of internal RAM and flash.
The obvious first choice is Linux running on an ARM processor. My perception of this path is that it is long and difficult, and running Linux typically requires external RAM and/or non volatile memory such as a flash drive, not to mention supporting hardware like a PMIC (power management IC). All this supporting infrastructure is expensive.
Bare-metal ARM would eliminate the Linux learning curve but my perception is that most ARM chips are not fully documented and even if they are development is difficult due to the complexity of the ARM architecture.
What are some other good options?
ARM micro-controllers are generally fully documented. ARM licencees producing SoCs for their own internal use may not document the SoC of course, but equally you would not normally be able to purchase a development board with one of those. One exception is the Raspberry Pi, it uses a Broadcom ARM11 SoC and can be over-clocked to 1GHz (from a default of 700MHz). While the chip's GPU in particular is not publicly documented, it is supported by at least some of the operating systems available for it - the most commonly used being Raspbian - a port of Debian Linux. It is very low cost - probably the biggest bang-per-buck available for a Linux platform.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I am already a software developer, but daily business work is neither challenging not improving my skills.
I have no clue how this embedded things work, what are the setup needs to be done to even run hello world program.
So I am looking for very basic development board, which is support at C language.
not very complicated or high processing. As that would be over killing for a just beginner.
if I am able to understand how to handle a small device. I would learn other upper level board. As it is self paced and self teaching. I don't wanna jump over a complicated board as that happened to me once. I have having LPC 21xx board, well equipped. having good space to create program and run them.
But I was knocked out in the round zero. could not figured out more then plugging into computer and turn it on.
So suggest me simple board it would be great if it support usb as my laptop does not have serial port. if if there is nothing no issue, I hope there will be something usb to serial. :)
Please help. I really wanna learn it.
The arduino is very user friendly but in part because they hid the stuff you are trying to learn. You can still get down to the metal on an arduino though
The winarm guy has tons of example programs to get you started.
Sparkfun is the place to go in the US for most boards. right now the sam7-h64 is on sale, atmel has a util for covering the loading of the board problem. you can get an mbed there, now the maple is there, coridium armmite pro, and a plethera of arduino variations. And the msp430 launchpad. No matter what I recommend picking up one of the msp430 launchpad boards, only $4.30, very nice architecture, the usb cable (that comes with it?) is all you need.
Another TI product is the stellaris line of cortex-m3 based chips/eval boards. The 811 is easy to brick, I would avoid it, comes with everything you need. the boards are dripping with goodies, oled display, buttons, etc.
At some point you are going to need to get your feet wet with openocd. Amontek makes the jtag-tiny which is a very nice arm jtag wiggler. A number of the eval boards have ftdi chips on them which handle usb to serial and usb to jtag, googling will show tons of info on how to use openocd to connect to and load.
Another path is qemu. a stellaris board/chip or few and other chip families are supported, so you can cover the learning to compile/build the program as well as program some peripherals without having to figure out the loading part.
The atmel avr butterfly is still available for $20. Three wires shoved into a serial port connector and you can program the thing. Has things on the board to learn to program, etc.
I recommend not limiting yourself to one processor family (avr, arm, msp430, etc) nor one chip vendor (lpc, atmel, ti, etc). many of these boards can be had for under $50, some under $25 (look at the ez430 additional boards 3 for $10, the launchpad might be able to program them, otherwise the ez430 is $20). (most of the arduino family wants an additional usb to serial plus power, which almost doubles the cost, also be careful to note 5V vs 3.3V boards, so you dont melt anything down, really good idea to get a few of the different ftdi usb to serial breakout boards from sparkfun anyway).
I don't know if you've heard of Arduino... it's a great beginning hardware platform, programmed with USB in C++. Boards are only $30 so it's pretty cheap too.
stm32l-discovery 14$ for stm32(16kb ram + 128kb flash + 4kb eeprom) + stlink2 on board, you just need an usb-cable. Be sure to get l version, not vl, the l- has slower cpu but an lcd and some touch sensitive buttons. I was a normal c developer before, but found a job in an embedded market, where we use the same processor. In a month I never used any assembler and the experience was not much different than programming for pc except for you can't effectively use dynamical allocation. But that doesn't matter, since you control all the memory and timing and all the hardware for that matter. The iar kickstart tools are also great, especially the debugger - it is fast and you can even attach to the running process. The editor in the IAR IDE sucks big time though. It still doesn't support unicode in 2011 and things like "outline" in eclipse. Still the IDE is very nicely integrated with the hardware. You also got stdperiph. library from stm. It is a bit on the bloatware side, but you can mix and match the modules you like or choose to use raw registers if it makes the code more readable or smaller. Anyway, ask away, if you are interested in my experience. I also would advise against avr, becaus from the cost/performance ratio they are much worse than stm. I was porting a lot of avr code in the last month(avr's had some supply problem) and even if the avr had 16 Mhz and the stm32 had only 32, it much faster, much more configurable and has more periferials which are also easier to programm. Cortex-M3 controller are much nearer to the PC you dont have to optimize alot and 32bit wide words for calculation will spare you much pain. M3 are more comfortable to program with the things like bit banding and configurable interrupt priorities.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am studying about programming, so I want to make some programs.
Actuall, nowadays I'm studying embedded with embedded development board.
so, I want to make embedded program....
but...... I have no ideas...... what program I can make.
so could you guys recommend for me????
The program you write will depend upon what hardware you have or what skills and equipment you have to build your hardware.
If you have no hardware (or electronics skills), then buy an off-the-shelf development board, and then the program will depend on the features available on the board. The simplest will have no more than a serial or USB port and some I/O pins direct to the microcontroller's GPIO and peripheral device IO; you will need to attach additional hardware to this. More expensive boards may include fast 32bit processors, displays, Ethernet, memory card interfaces, large external RAM/Flash memories, WiFi, buttons, switches, LED's etc.
At the very minimum if you have never brought an embedded system up before, you should do exactly what you might do on a desktop system when learning to program it; that is write "hello world". In this case teh text should be emitted from the serial port, and displayed in a terminal emulator (such as TeraTerm or if you must, HyperTerminal). This will confirm that you have the development tool-chain and work-flow working and can build an load the binary to the board. It will also verify that you have basic serial host communications working which will be beneficial for debugging, especially if you do not have dedicated debug hardware such as a JTAG emulator or ICE.
You may find that your development tool suite, or the microcontroller or board vendor's website includes demonstration examples for your hardware which will include basic driver code. No doubt there will be a simple serial I/O demonstration that will suit the "hello, world" test. It may perform direct serial output, or it may be more sophisticated and provide library retargetting code such that standard I/O library calls such as printf() and getchar() will work over the serial port.
Once you have got the basics sorted, you are then perhaps ready to decide what to build. If your board has a dot-matrix graphical display (even a very small one), and a few switches or a potentiometer, then a simple arcade game such as breakout, defender, invaders, or even pong would be possible and give instant gratification!
One of the most rewarding things you can do with an embedded system is make stuff move. Motor control and robotics applications are most rewarding and have important real-time requirements that will develop skills that are not generally utilised on a desktop application. For such applications you will need additional hardware to interface to high current devices such as motors, such as a simple H-Bridge controller. You can purchase such hardware from a number of robotics kit suppliers, or you can build your own if you have the skills and equipment necessary. I suggest starting with a simple "big-trak" style mobile vehicle (Meccano or Lego-Technic can be used if you have limited mechanical skills), and then perhaps add sensors such as bump-switches, light-detection, line follower, ultra-sonic, odometry etc.
When your applications ger more complex, you will benefit from learning about an deploying a simple RTOS or real-time scheduling kernel.
Clock program. With a timezone converter.
You could look at programming an Arduino ( http://www.arduino.cc ) or perhaps a MAKE controller of some sort ( http://www.makethings.com ). It really depends on what you want to do! Enjoy!
I think this s3c6410 board may fit what you need www.developmentboard.net called tenbyten6410.I just bought it few days ago, now its working perfect in our project. I hope it will work in your project, as good as, in mine .
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I'm looking for reasons developers ought to consider before developing and testing applications and games on a jailbreak device. My conviction is that if you want to publish your App to the App Store, you better make sure you always test on a non-jailbreak device. Eg. if you are a serious developer, what do you have to consider before jailbreaking your only development device respectively buying a second untampered device just for development.
The legal implications are fairly well known but it doesn't hurt to reiterate them. What I'm more interested in are all the technical reasons why development on a jailbroken iPhone will make your life harder (or sometimes easier if that exists, too).
For example, I've read that jailbreak devices can cause adverse behavior, bugs and crashes which will not appear on a non-jailbreak device. But what those issues are remains in the dark. I'm looking for concrete evidence of bugs and misbehavior that is relatively common (eg occured to you, or someone who blogged about it) when you do test on a jailbreak device.
You always want to test on the device and configuration you will be releasing for. If your going to release for jailbroke devices, test on jailbroke. If you intend to release through the app store, test on an unbroken devices.
I haven't work on a jailbroke device but I think the biggest issue would be that jailbroke devices do not enforce the same security restrictions as non-jailbroke devices. It would be easy to have a segment of code that relies on access that disappears on a non-jailbroke device.
You always want to develop and/or test on device as close to your projected average user as possible. One big mistake that developers have made for decades is building and test new software on their high-horse power developer stations. They see that the softwares runs fine on there above average systesm but when they release the software to average users running on average systems, the software is to slow in real-world use. That wouldn't be such an issue on mobile devices but the principle is the same.
there is one big problem that I've took more than a week to figure out:
inAppPurchase development doesn't work on JB devices (it gives InvalidProductIDs for all inApps)
(some reports say it's for JB with AppSync installed)