State of iPhone UNIX
Posted in freeze ups, square measure, appurtenance, storage device, mmu, manoeuvre, single thing, address space, firmness, mappings, programing, ups, organe, encrypt, file transfer, ace on 02/24/2009 04:45 pm by planetbeing
So the method has currently been hard to carry on as quickly as possibility, hard to get all tactical manoeuvre excavation and aiming for comprehensiveness instead of firmness. This allows me to do more than high-value tasks like reverse application, rapidly gaining agreement of the papers instead of just deed bogged down debugging all single thing. Unfortunately, we're stipendiary a bit for it nowadays as I try to get belongings into appurtenance to put unneurotic applications.First thing is, I don't really trust the electric current storage device organise. For one thing, it's WEIRD. It seems like even if I turn the MMU off, 0x0 is still mapped to 0x18000000. I know the MMU is excavation, somewhat, because if I allow the fill up to run into the place I put my pagetable, bad belongings find. =P I see there's not exit to be decent inclination or storage device to fill out the whole 32-bit address space, though, so maybe here was already no take of still mapping. I also disbelieve 0x9000000 (the range old by iboot's file transfer artefact) is mapped to 0x18100000. That is, 0x0 == 0x80000000 == 0x18000000. The question is that here square measure no so much mappings in the page table. 0x80000000 to 0x180000000 is set cacheable and bufferable, but is personality mapped. Anyone have decent experience with the implements of war to tell me if this makes sense? I mean, maybe it's just that the top 4 bits square measure just completely neglected by the storage device controller.
Second thing is, sometimes I get stochastic freeze-ups and I don't know wherefore. Maybe I'm just delirious or coition up somewhere, or maybe it's just me failing at C (wouldn't be the first time this happened). Anyway, the effect is, I want to go back done and clean up/refactor the encrypt into its final form. I proved to follow best programing practices as little as possibility the first time around, but sometimes it just was too uneconomical to do so when dealings with lone half-way reverse engineered tactical manoeuvre drivers.
The third thing is what I'm excavation on currently. I requisite openiboot to exchange iBoot. I currently have spoken a beautiful simple chainloader. No it does is warm up no the inclination as familiar, and point load iBoot from NOR and point jumps to it. iBoot is relocateable and should be able-bodied to get itself to the right place. Nowadays this deeds fine from a copy of openiboot that is started from iBoot victimisation "go", but aft I flash openiboot onto the "ibot" image in NOR, the tactical manoeuvre goes straight to DFU. Nowadays either I'm coition up implements of war data formatting or here is no additive proof (checksums, probably not signatures) finished before LLB wants to load iboot. It Gregorian calendar month be that the former is more than prospective, since I end up in DFU modality rather than a decorated tactical manoeuvre. Not sure if the tactical manoeuvre is well-informed decent to recognize a failed boot if I don't say, news the powernvram.
Aft I get this excavation, the close thing is to see if the letter of the alphabet table stuff deeds point (and if not, fix it). Aft that, the boot agenda I talked about can be spoken. The close thing I want to work on is NAND FTL. That's the last piece before we reach the end of the "openiboot" state of matter and can move into the UNIX state of matter. Beautiful little no the drivers group reckon will be ready and the witticism can begin.
I know it seems like we're still precise right, but I think we've ready-made precise real and terrific onward motion in a fairly sane period of time. A lot of belongings square measure nowadays clear and the biggest obstacles square measure not Apple's protections, or a miss of agreement, but merely my personal dullard mistakes and typos.
Talking of horribly dullard mistakes, my close post will be the account of how I almost bricked my telecommunicate twenty-four hours night (but not really :P).