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.
 
  • Post
  • Reply
ExcessBLarg!
Sep 1, 2001

movax posted:

Too much of the lower-level workings of modern systems (x86, etc) are being lost to NDAs and vaults in a handful of company basements.
It's actually the opposite. The x86/x86-64 processors are ridiculously well documented from a software perspective. And the IBM PC platform is still essentially backwards-compatible with machines of 30 years ago.

The problem with learning systems programming on x86 is that it's super-loving complicated. Unlike the C64 where one person really could learn the entire ins-and-outs of the machine, the scope of the x86 and PC platform is insanely large. It is very well documented, but also very difficult for any one person to fully understand.

Beyond that, the barrier to entry is pretty high. It's definitely doable for an individual to write a PC OS that'll boot off a floppy disk and can be used with a PS/2 keyboard. But with many machines shipping with USB only, you either need to implement a USB stack in your OS (very large) or rely on a bunch of BIOS emulation code, which somewhat contradicts the idea of working with the "bare metal."

In contrast, embedded ARM platforms aren't too bad. There's definitely more to them than a C64, but it's a reasonable platform to write a bare-metal OS that can be interacted with via RS-232, GPIOs, perhaps even VGA. The ARM ISA is also really nice and it's great for learning systems programming on.

But there's three big problems with little ARM boards.

First, a lot of the documentation on it isn't freely available. Yes, you can find a very old version of the ARM Architecture Reference Manual if you Google for it, and the ARM Information Center has a good deal of information too, but the sheer number of topics on that site that say "This document is only available in a PDF version to registered ARM customers." is downright infuriating.

Second, there's not really such a thing as the ARM platform. Rather, ARM cores are integrated into a bunch of different Systems on a Chip (SoC) that implement fairly different platforms from a systems programming perspective. Many of these platforms have little-to-no public documentation and implementing support for them essentially requires an NDA. Yes, you can go read the code that comprises Linux kernel support for them, assuming it's been mainlined or at least easy to find, and there exists a development board you can actually purchase at reasonable cost (sub $100) and run code on. But that's not really an ideal way to learn.

Third, the plethora of embedded ARM platforms, with the lack of any one standard, and the fact the embedded space is evolving very rapidly means that any one device/platform has fairly high chance of becoming unmaintained and obsolete in just a few years. This leads to there being a bunch of half-baked software implementations that "get the job done", at least for a little while, but don't serve as a solid basis for use in teaching over a period of many years.

As an example, a few years ago I found the Gumstix Basix (PXA255) platform to be one of the best sub-$100 options for teaching embedded systems programming. Unforunately Linux support was somewhat half baked and never (to my knowledge) mainlined. Documentation was spotty and incomplete. And after just a couple of years, it was discontinued with no perfectly-backwards compatible upgrade path.

So yes, I'm excited about the Raspberry Pi project. $25-35 is an awesome pricepoint for being able to get the boards into the hands of students, even kids, and let them fool around with it without huge replacement cost concerns when they inevitably ESD, destroy, or otherwise mangle them. There's enough developer interest in the project that, if it doesn't become a "standard platform", it at least gets mainline Linux support and a software ecosystem that can support it for a solid five years or more. And although it's based on a Broadcom SoC (who are typically the most stingy with documentation) it appears the project has enough clout to get at least some documentation into the hands of folks who are interested in doing bare metal hacking.

If it works out, I see it as being a great boon to embedded/computer systems education on a number of levels. While it would be great for it to serve as the modern-era's equivalent of the C64 for folks who want to learn how to bare-metal hack, it could seriously improve the state of present embedded systems teaching by serving as the standard cheap platform that folks can actually write solid time-enduring teaching material for.

ExcessBLarg! fucked around with this message at 02:39 on Feb 26, 2012

Adbot
ADBOT LOVES YOU

ExcessBLarg!
Sep 1, 2001

muuuzo posted:

Can you run JavaSE (from Sun/) on Raspberry Pi?
Should. Oracle distributes Java SE for Embedded which, while I've never used it, targets a few different ARM Linux setups. The ARMv6 EABI VFP Little Endian should work with the Pi.

Also, some ARM Linux distributions (e.g., Debian) include OpenJDK which is close enough to Oracle Java in my book that I don't bother with official packages, even for things like compiling Android.

ExcessBLarg!
Sep 1, 2001

peepsalot posted:

I was searching for a fast SD card to be used with the pi, and I found these SD card benchmarks from Tom's Hardware: http://www.tomshardware.com/charts/2011-sd-cards/benchmarks,125.html
SD cards are typically rated (and frankly, designed for) large/bulk sustained writes, because the canonical application for them is to record (large) photos and movies in cameras as fast as possible.

Thing is, for "general linuxing", it's probably best to have a card that emphasizes small (~4 kB) random read performance. This is because embedded devices are typically memory starved, and random read performance is important for avoiding UI lag when you're opening up programs and poo poo.

Unfortunately SD controllers are often designed to trade random read performance, which doesn't matter much on cameras, for improved sequential write. So it's not uncommon to find Class 10 SD cards that perform noticeably worse in this kind of application than some Class 6 ones.

For reference, I have a few Transcend cards that I run ROMs off of on my phone. The random I/O performance of the 8 GB Class 6 card is roughly middle of the pack on those benchmarks but is perfectly adequate. I don't observe UI lag much beyond what I get with on-board NAND, and at $9 it's a good "dirt cheap" option if you don't need much space. In contrast, the 16 GB Class 10 card is horrible. Very bad lag, but I needed more space. If I had known about that Patriot, I would've gotten that.

peepsalot posted:

Also, what the hell is going on with "Samsung Plus (16GB, Class 10) MB-SPAGA" in some of the h2benchw results?
It has to be an error. It's showing 22 GB/s. That's not happening in reality.

ExcessBLarg! fucked around with this message at 20:56 on May 21, 2012

ExcessBLarg!
Sep 1, 2001

WoG posted:

You'll see SD cards rated as 'Class 2/4/6/10', which corresponds to how fast they read/write.... Especially for storing an OS, and for the tiny price difference, you'll absolutely want a Class 10.
I'm sorry, but this is misleading.

SD card speed ratings apply to sustained writes only, which is important when you want use them in a camera or camcorder since, if the card can't do sustained writes fast enough, you can't record video to it.

However, when making SD controllers usually a trade-off is made between sequential write performance, and random read/write performance. And it's random I/O performance that's important when running an OS from an SD card. Anecdotally, I've had far better performance from some class 6 cards as opposed to class 10.

Check out Tom's Hardware 2011 SD Card Benchmarks. There's a lot of benchmarks there. If there's one that probably the most applicable, it's the IOMeter Workstation Benchmark Pattern.

If there's one card I'd go with, it's the Patriot PEF32GSHC10233 32 GB. If you're looking for smaller/cheaper cards, Patriot 16 GB and Transcend TS8GSDHC6 8 GB are alright options.

ExcessBLarg! fucked around with this message at 20:56 on Aug 4, 2012

ExcessBLarg!
Sep 1, 2001

Naffer posted:

I imagine this is going to torch my SDcard sooner rather than later, is there a particular brand card that I should get that will handle this?
Most (micro)SD cards have terrible random-write (and generally random-IO) IOPS. I've found SanDisk Ultras to be passable while within the same price range as other cards, but it still doesn't compare to the eMMCs used on smartphones/tablets, which themselves underperform considerably compared to SSDs. If you did need something a bit better, I'd try a SanDisk Extreme, but otherwise it's really just best to avoid write loads on SD cards.

Anyways, the low hanging fruit is to mount noatime and use a tmpfs for /var/log. Beyond that I'd check to see where the other writes are going and whether I care about them, or if the write rates are low enough as to be acceptable. You probably also want to use the discard mount option also as it will help keep the SD card as performant as possible once a write-cycle is near completion.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply