Monday 5 August 2013

I've taken up woodworking....

As the title says, I've taken up woodworking, I've wanted to make things for a while now but always lacked any decent tools and any skill, apart from a soldering iron and some wire cutters.  as you can see from my other articles, I like embedded electronics, but there are never any sensible cases for things, if there are, it's a ridiculous price and probably not entirely appropriate to my needs.  So I want to design and craft my own cases, along with little bits of furniture and other ideas I might have for my other hobbies, eventually I'd like to build a cnc to take care of intricate parts but for bigger projects woodworking will be great.  I have been ill for some time, so this will also be an opportunity to start to slowly get fitter.

My tool kit has consisted for some time of rusty pliers, a junior hacksaw, a rasp, a claw hammer and a bent chisel, not exactly inspiring.  I started looking into getting some tools together, spoke to my dad and the upshot was that he donated me power tools and hand tools as he's been upgrading his.

So far I have a ferm scroll saw, jig saw, power drill, 2 routers, 2 router tables, compound sliding mitre saw, detail sander, cordless circular saw, detail sander, 7 bevel edged chisels, a record no.4 smoothing plane and an oilstone.  It all sounds like a reasonable load of kit and on the face of things it is, however, there are a few issues that needed sorting out.

The first power tool I was given was a Ferm ffz-400n scroll saw, it's pretty much your standard lower middle range scroll saw, it's a pinned blade system but can be upgraded to a pinless system, to use it properly it will need to be upgraded, as it stands it's quite hit and miss as to how the blade will behave and intricate inside work is impossible due to needing at least a 5mm hole to insert the blade through a work piece.

Next was the Bosch router and router table, the router is a 1/4", it's ok but apparently the micro-adjuster suffers from creep even when the thing is locked, it was missing bushes and being bosch they were proprietary and expensive, it also had trammel bars but these were rusty.

The Bosch RT60 router table is a cast metal table, it's really a jobbing table than a precision unit, it's got a rudimentary plastic fence which has a couple of nice features but non standard slots in it and no way to attach anything, being plastic you'll probably ruin it before you modify it with any attachments.  It's also got a mitre slot cast into the bench but the finish was so poor on the paintwork/casting that it would really need plenty of work to get it to a usable state for jigs and to top it all the mitre slot is shorter than the standard slots that everyone else uses.

I wasn't entirely convinced with the router, being a plunge router in a table it's not exactly simple to swap bits and adjust height, by the time I'd spent money on the router to get it up to a usable state, I could have bought 1/2 a new router with all the trimmings that could take 1/2 inch router bits.

The 2nd router was a blackspur, again, like the bosch it's a plunge router, it's a bit weak, certainly not suitable for a table and most of the bits missing for using it as a normal router, it's essentially now a fat 1kw laminate trimmer.

At this point I'd read up a lot on routers, router tables, fences and associated systems, my dad incidentally has an incra setup, it's something I'd like to aspire to but not something I would want to spend the money on, at least not right now.

So, what to do?  Well, it was clear that I wanted to have a router table with a fence system that allows repeatability, I also need a decent workbench to work on too, this was again discussed with my father, who graciously decided to donate his 'shopsmith' router table, this is a thick mdf affair, with a proper dado'd aluminium mitre slot, the only small issue with it is that the slot is actually a shopsmith proprietary size but this will soon be remedied when the standard mitre slot arrives.

I also decided at this point that if I'm going to have a reasonable router table then I should have a reasonable router, I don't have hundreds of pounds to spend on festool etc. but I wanted a fixed based router, I settled on a draper 1350w combination router kit,  it's got a plunge base and a fixed base, it comes with a 1/4" and 1/2" collets, a set of screw in bushes, trammel bars, guide rail and centring pin.  I didn't go mad with bits, I bought a cheap draper 1/4" set, I figured that I'd get a set of cheap generic bits so that I could learn which bits I really needed and wouldn't worry about trashing them with my ineptitude.

All that prep work and not a single thing built yet!!  This isn't really surprising, as my current workbench is a weak workmate style bench, I also have zero skills, along with a distinct lack of timber.

My Dad to the rescue yet again, brought over a load of wood that was supposed to be enough to build a bench and a couple of different sets of plans for building one.  I Studied the plans looked at the wood and figured there wasn't really that much of a relationship between the 2!!  I had 4x 29"x3x3, one of them square, the other 3 didn't have a 90deg angle between them, so they're too short and they'd need a bit of work to get them to a usable state.  The rails were also in a dubious state/not enough.

  To cut a long story short, I decided to cut my losses on the legs and go and get 4x 39"x3x3 PAR, my Dad also sorted me out with enough wood to sort out the rails.  I'm currently waiting on the wood for the top but that should be within the next week or so.

I've knocked up a design on sketchup (had to learn how to use that first), it's based on a few other designs dotted around the net, it'll be sturdy enough to last for years and give me a solid work area for all of my projects.

Once I've got the bench built, I will build a carcass for the shopsmith router table to sit on.

Onto the hand tools,  using a junior hacksaw for everything is lame and my bent chisel is only useful for opening tins of paint.  You can't really build a bench with those, so I bought myself a tenon saw, in hindsight it was cheap junk and not really that appropriate or at least not appropriate for someone who hasn't used a saw much in his life.  It was really too bulky for fine control, more teeth than a piranha and set wide enough to drive a bus through the kerf.

Dad to the rescue yet again (he really is great isn't he?), 7 bevel edged chisels, an oilstone, a record no.4 and a japanese flush cutting saw with a ninja style name.

A couple of the chisels were stanley, 3 of them looked like the stanleys but no markings and the last 2 had no names on them, some of them were the same size, so I ended up with 3 different sizes, 1/2", 3/4" and 1".

None of them had sensible bevels on them, I weighed up the time it would take to learn how to hone chisels by hand/eye coordination alone vs getting a honing guide kit and getting on with life, the honing guide kit won.

There are many methods to putting a bevel on a chisel and producing a nice sharp edge, I'm still trying them all out so I won't tell you how I do mine, you'll have to find out for yourself :-)

With sharp chisels, I could attempt to chop holes in wood, my previous couple of attempts with my bent paint tin opener were abject failures, tearout, poor control, rubbish bevel/sharp edge all contributed to a crummy mortice.

I watched quite a few videos on the net, most notably paul sellers, he has a really nice presentation style, very easy to listen to and explains everything simply.  Armed with what I'd seen and sharp chisels I have attempted a few more mortices, with much better success.  I am refining my technique, getting a feel for the chisel, a feel for the wood and how the grain will behave, after 5 mortices with the sharp chisels I'm getting nice straight walls, neat lines and I'm cutting them much faster.  I still need to keep an eye when I'm cleaning out chips as I seem to not pay attention at some point and crush a short wall.

The plane has been a fun learning experience, I first had to learn about all the parts of a plane and how to fettle them, not exactly easy when you have no idea of how a plane should behave, it didn't behave too well, it seemed to jam up quite quickly, so I set about taking it apart and seeing if I could make it better.

I sorted the bevel out on the blade, then flattened the chipbreaker edge so that it was tight against the blade and set back from the tip accordingly. I also adjusted the frog to give a slightly wider blade/mouth opening and set about using the plane on one of the bits of 29x3x3 legs that my dad had given me, 4 sides later and I have a plane that I am confident in using and a length of 3x3 that is nicely trued and not a matchstick either!!

Yeah, yeah, I know, I still haven't built anything at this point, I don't see the point of attempting anything with the wood for the bench until I am sure I can complete the task.  Due to my illness I don't have oodles of time or energy to spend a day in a workshop, so I've been doing things when appropriate, over time this will get better I'm sure.

I would like to point out that I have been reading up and watching wood working videos on the net, as well as getting superb help on  http://www.ukworkshop.co.uk/forums/ the guys there have been fantastic and given me great advice and opinion, they've given me lots of insight into modern and old techniques that are going to prove invaluable in the future, thanks guys.

Everything I've been doing so far has been self learnt, I won't say self taught as I've used those wonderful free resources supplied by google to find forums, videos and articles by people that have taught me, I know the internet is a big place but I found that there are enough opinions out there whether they're conflicting or not that will allow you to filter them and find the information that's appropriate for you, your skill level and your budget.

It all seems a bit daunting to start off with, there are loads of websites, hundreds of tools, gadgets and doohickys out there, with more opinions than stars in the galaxy, so if you're starting out like me, my advice is to read a lot, watch as many videos as you can, join a forum, ask lots of questions (whether they seem stupid or not), never be afraid to challenge opinion and most of all, learn to use google to your best advantage.

I've learnt tons of stuff over the last few months, it doesn't feel like I've done much as it's all been prep work,

I reckon in the next week or 2 that I'll get started on my bench for real, I think by then I'll have gained enough skill and confidence to produce something that I will be proud of, I had originally planned on using 1/2 lap joints but I'm now starting to think I might actually be able to do decent enough mortices that I might use those instead.

I think that's about enough from me for now for my first woodworking post, see you next time....

Saturday 27 July 2013

Shiny new exynos 4412 board and hi-res touchscreen + mini210s black edition released on andahammer

It looks like www.andahammer.com and friendlyarm have been busy again and released a couple of new boards, first up we have the mini210s black edition, with some neat features, made exclusively for andahammer, they feature a 6pin header for access to the buzzer, pot and mic headers and a write protect for the eeprom which means you can safely store mac addresses, phone numbers, device serial numbers etc. and retrieve them at boot, lastly there is a jumper to silence the onboard piezo buzzer.

They're only small changes but from a developers point of view they open up some nice features, firstly it means that you're no longer tied to having the inconvenient onboard placement for the buzzer, pot and mic, once the min210 is in a case, those devices will be near useless so being able to place them where they can be used is a big help.

As mentioned for the eeprom, it's easy to see the advantages of having a write protect option, it means that you can store information on the device without worrying it will be wiped, it means you can have a small level of security over your stored data and uniquely identify the board and more importantly store a mac address which is useful if you have a lot of mini210S on a network.

The buzzer, it screeches like a banshee, being able to mute it with a jumper is manna from heaven :)

Onto the shiny new exynos 4412 board, the folks over at http://www.andahammer.com/tiny4412sdk-hd70/ have a system ready to go, it's a standard friendylarm 'tiny' form factor, so it's a core tiny board (cpu, ram, e-mmc) with an arm cortex-a9 quad core cpu, 1GB ddr 3, 4GB e-mmc flash, then you have the SDK board which has all of the headers for all of the peripherals like usb/micro usb, ethernet, SD socket, com ports, hdmi, g-sensor (accelerometer), audio out/mic in,buttons and most interestingly there is a cpld on board for some programmable logic fun, if you want more information keep an eye on the andahammer website for updates.

I almost forgot, the LCD that goes with the tiny4412 kit is a 7" high resolution 1280x800 capacitive touchscreen which gives it a very nice resolution for any of the modern OS distros.

I can't wait to see what this board can actually do, 1.5Ghz quad core should go like a rocket, lots of ram, the nand flash should be that bit faster on the e-mmc setup, it should have better 3d/2d support and the usual hd codec support, it will be running kernel 3.50 and android 4.2.





mini210S updates



Yet again it's been a while since my last post but things are moving forwards with the nand driver, there is currently an effort from some of the chinese developers on the arm9home.net forums to do various ports  for the tiny/mini210s, barebox, uboot and a kernel upgrade to 3.10, I've been helping to iron out issues with the nand driver port and this evening we got a working 3.10 nand driver, it's currently spitting out ecc errors but hey, don't they all?

All joking aside that is actually a reasonable state for the driver to be in, at that point the code has managed to query the nand chip and retrieve the ID bytes directly from it, so we know the read/write functions are working.

We also know at this point that we're hitting the correct register addresses because the functions are working and we're pulling in meaningful information, it was broken but we found that the nand_flash_dev struct had been altered so simply changing where we pull the current device id from fixed that.  As long as nothing else has changed in a big way in the nand driver then it's more than likely a mismatch between the version of superboot and our nand driver, more specifically it's probably the nand ecc pos layout that is at fault.

There was a pull request on github for the nand driver, there was a 'typo' in the ecc pos layout, which in fairness wasn't our error, we used a specific driver to dump information from to write our driver, the values for the ecc pos layout were a direct dump, which probably explains why our driver only ever worked with a specific version of superboot.  The next step is to dump information from the nand drivers from the newer dvds, if we use the kernel sources and matching superboot we can see if the 'typo' error is isolated or not.



Thursday 25 April 2013

Mini210s, nand drivers, 16bit ecc and bootloaders

It's been a while since I last posted anything here, recently I've been helping out with an open source nand driver for the mini210S which you can find here:
https://github.com/Reggi3/210-nand-patch

With some fantastic work from Jkent and some help from me, we've managed to get a stable nand driver working that's pretty faithful to the original drivers.

It basically replaces the friendlyarm binary blob (s5p_nand_mlc.fo) with open source code, which means it should now be relatively simple to add 16bit ecc support into any of the bootloaders that are currently being worked on.

I'm repeating myself a bit here but our driver was tested on a mini210S with 4GB of MLC nand, we tested it with android 4.0.3 and it works with either kernel, 2.6.35 and 3.0.8.


Now we've released our driver we started to look at the bootloaders that were currently available, there is barebox and a pair of uboots, each of them seem to have their own issues, the major issue is that some of them are using older code, so even if you get the nand layout correct, it still won't work because the mtd subsystem and nand base drivers aren't setup to read 5/6 byte ID strings. 

Another issue I found was that barebox wasn't capable of addressing > 2GB in bytes due to using an int32 when it should be using a int64, it also cannot address 640byte oob nor was it capable of addressing 8k pages.


The last issue which is inherent to all of the open source bootloaders is the lack of proper ECC layout for each of the chips, I'll try and address that now.

When we started to write our own nand driver we needed to dump some information from the driver, namely the ecclayout, as you can see here:

https://github.com/Reggi3/210-nand-patch/blob/master/s5p_nand_mlc.c#L104

To get this information we had to edit the s3c_nand.c code, you can use the same code that we did to get the ecc layout for 1GB SLC, 2GB MLC or 4GB MLC nand, look for the print_oob function and make it look like this:

void print_oob(const char *header, struct mtd_info *mtd)
{
 int i;
 struct nand_chip *chip = mtd->priv;

// Reggie modified to dump the nand info from a K9GBGB8U0A 4GB mlc nand chip
 printk(KERN_INFO "%s:\t", header);
  printk("Dumping the nand ecc layout positions\n");
// Work out how many eccbytes we need to read the positions for
  int j = chip->ecc.layout->eccbytes ;

  printk(KERN_INFO "\n");
  for (i = 0; i < j; i++){
     printk("%u, ", chip->ecc.layout->eccpos[i]);
    if(i != 0 && i%8 == 0)
    printk("\n");
  }
  

  printk("\n");
  printk("Dumping the nand ecc layout\n");
  printk(".eccbytes %d \n", chip->ecc.layout->eccbytes);
  printk(".oobfree offset %d \n", chip->ecc.layout->oobfree->offset);
  printk(".oobfree length %d \n", chip->ecc.layout->oobfree->length);
  printk("ecc bytes  %d \n", chip->ecc.bytes);
  printk("ecc size %d \n", chip->ecc.size);
  printk("badblockbits %d \n", chip->badblockbits);
  printk("chip->pagemask %d \n", chip->pagemask);
  printk("mtd->oobsize %d \n", mtd->oobsize);
  printk("chip->ecc.steps %d \n",  chip->ecc.steps);
  printk("mtd->writesize %d \n", mtd->writesize);
  printk("chip->ecc.total %d \n", chip->ecc.total);
}
EXPORT_SYMBOL(print_oob);


You will also have to edit the end of the s3c_nand_probe function:
 print_oob("Nand oob info", s3c_mtd);
 pr_debug("initialized ok\n");

 return 0;

exit_error:
 kfree(s3c_mtd);

 return ret;
}



In fact, it should be relatively simple to use a similar method to get the correct ooblayout from any nand as long as you have access to it's probe functions and even if you don't have access to those, you should be able to find somewhere to poke the mtd driver to give up all of this information anyway.