--- Log for 04.02.117 Server: adams.freenode.net Channel: #rockbox --- Nick: logbot Version: Dancer V4.16 Started: 5 hours and 5 minutes ago 00.01.21 Quit alexweissman (Remote host closed the connection) 00.01.52 # I was under the impression I could force it to the very end of the file or am I mistaken? 00.02.43 # yes, if you change all linker files 00.04.16 # ah ok 00.04.37 # you need to mark the instanciation of the structure with something like __attribute__((".eof")) [I'm making up a name] and then the linker file of each target need to ensure this section (.eof) is at the very end of the binary 00.04.51 # it's not necessarily very complicated to do, just needs to be careful 00.05.44 Quit scorche (Disconnected by services) 00.05.48 Join scorche` [0] (~scorche@rockbox/administrator/scorche) 00.09.06 Quit Senji (Ping timeout: 240 seconds) 00.15.34 # Bilgus: maybe sending an email to the mailing list would be a good idea, to gather feedback and maybe ideas 00.15.53 # I just signed up to it today 00.16.15 # Haven't gotten an activated mail as of yet 00.17.16 Join shh [0] (~me@145.132.155.235) 00.18.12 # Bilgus: if you don't get it soon, send an email to Zagor 00.19.00 Join scorche [0] (~scorche@rockbox/administrator/scorche) 00.20.46 Quit scorche` (Ping timeout: 240 seconds) 00.21.00 # k 00.21.46 Quit shh (Ping timeout: 240 seconds) 00.25.32 Quit scorche (Ping timeout: 264 seconds) 00.46.09 Quit mutnai (Quit: Page closed) 00.46.47 Join chrisjj [0] (5001d87b@gateway/web/freenode/ip.80.1.216.123) 00.46.51 Nick zoid is now known as TRUMPbot (~zoid@unaffiliated/taxationistheft) 00.47.15 Nick TRUMPbot is now known as zoid (~zoid@unaffiliated/taxationistheft) 00.47.42 Nick zoid is now known as EagleBot (~zoid@unaffiliated/taxationistheft) 00.47.52 Nick EagleBot is now known as zoid (~zoid@unaffiliated/taxationistheft) 00.49.43 Quit lebellium (Quit: ChatZilla 0.9.93 [Firefox 51.0.1/20170125094131]) 00.49.57 Nick zoid is now known as taxationistheft (~zoid@unaffiliated/taxationistheft) 00.50.17 Nick taxationistheft is now known as zoid (~zoid@unaffiliated/taxationistheft) 00.56.26 *** Saving seen data "./dancer.seen" 01.01.34 Join scorche [0] (~scorche@rockbox/administrator/scorche) 01.19.20 Quit pamaury (Ping timeout: 258 seconds) 01.26.56 Quit xorly (Ping timeout: 245 seconds) 01.28.26 Join Scyther [0] (~Anna@104.200.153.96) 01.31.21 Quit PurlingNayuki (Ping timeout: 252 seconds) 01.34.34 Join ffurrywol [0] (~randyg@70-6-147-73.pools.spcsdns.net) 01.36.02 Quit furrywolf (Disconnected by services) 01.36.06 Nick ffurrywol is now known as furrywolf (~randyg@70-6-147-73.pools.spcsdns.net) 01.45.27 Quit amayer (Quit: Leaving) 01.50.46 Quit ZincAlloy (Quit: Leaving.) 01.53.51 Quit michaelni (Quit: Leaving) 02.00.02 Join Link8 [0] (~me@86.85.176.166) 02.00.16 Quit Link8 (Client Quit) 02.03.08 Join alexweissman [0] (~alexweiss@c-68-51-123-75.hsd1.in.comcast.net) 02.06.09 Join michaelni [0] (~michael@213-47-41-20.cable.dynamic.surfer.at) 02.07.30 Quit girafe (Read error: Connection reset by peer) 02.11.59 Quit ender` (Quit: Religion is regarded by the common people as true, by the wise as false, and by the rulers as useful. — Seneca) 02.38.35 Quit amazoniantoad (Ping timeout: 255 seconds) 02.56.28 *** Saving seen data "./dancer.seen" 02.57.22 Quit Scyther (Quit: My Mac has gone to sleep. ZZZzzz…) 03.06.38 Quit saratoga (Quit: Page closed) 03.29.36 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170) 03.33.52 Quit PurlingNayuki (Ping timeout: 258 seconds) 03.45.23 Join Strife1989 [0] (~quassel@adsl-98-80-195-3.mcn.bellsouth.net) 03.47.14 Quit Strife89 (Ping timeout: 256 seconds) 04.01.14 Join hunterleo [0] (0e7ff80d@gateway/web/freenode/ip.14.127.248.13) 04.08.52 # help 04.09.01 # <__builtin> hey hunterleo 04.09.13 # <__builtin> nice seeing you here :) 04.09.19 # Hi Builtin 04.10.17 # I don't know how to contact pamaury. Can I find he here? 04.10.29 # <__builtin> he's not around right now 04.11.01 # <__builtin> I assume you're here regarding the ROCKER? 04.12.39 # Yep. Do you know anyone regarding how to get it being ported? 04.13.01 # <__builtin> well, pamaury's definitely the porting god around here 04.13.45 # Sure, everyone says so. 04.14.17 # <__builtin> was there anything in particular you wanted to ask or say? 04.14.38 # Is there anther way I can find him? 04.15.04 # wiat 04.16.02 # <__builtin> hunterleo: he reads the logs for this channel, I think 04.16.30 # <__builtin> so you can just say it here if that's okay 04.17.34 # Thank you very much. It's very kind of you! 04.19.41 # do you have a Rocker in your hands? 04.20.12 # <__builtin> what software does it currently run, and is there an easy way to execute custom code on it? 04.21.04 # We are very extremely interested :P 04.21.13 # Yes, I have one. 04.22.36 # We hired ths same team which develop OS for FiiO, so the OS works like FiiO X1. 04.24.47 # Do we have specs? 04.25.37 # We couldn't execute custom code before porting it. 04.25.56 # hunterleo: pamaury is working on porting to X1 (maybe not currently) 04.25.57 # http://www.ingenic.com/en/?product/id/9.html check this out 04.27.26 # FiiO X1 uses JZ4775. Rocker uses X1000. 04.27.47 # JZ4775 is going to be discontinued. 04.28.30 # The new models of FiiO also use X1000. 04.50.21 # Vert nice 04.50.27 # Very 04.56.30 *** Saving seen data "./dancer.seen" 04.59.53 # Thanks. Bilgus. 05.00.26 # Whats the expected price point USD of these? 05.56.48 Join JanC_ [0] (~janc@lugwv/member/JanC) 05.57.13 Quit MrZeus (Ping timeout: 255 seconds) 05.58.07 Nick JanC is now known as Guest8949 (~janc@lugwv/member/JanC) 05.58.07 Quit Guest8949 (Killed (sinisalo.freenode.net (Nickname regained by services))) 05.58.08 Nick JanC_ is now known as JanC (~janc@lugwv/member/JanC) 06.07.03 Quit smoke_fumus (Read error: Connection reset by peer) 06.08.15 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170) 06.09.02 Quit TheSeven (Ping timeout: 245 seconds) 06.09.48 Join TheSeven [0] (~quassel@rockbox/developer/TheSeven) 06.26.18 Quit furrywolf (Ping timeout: 255 seconds) 06.56.31 *** Saving seen data "./dancer.seen" 06.56.58 Join ungali [0] (ungali@unaffiliated/ungali) 07.03.58 # The retail price is 60 USD now. 07.08.06 Quit Acou_Bass (Read error: Connection timed out) 07.09.52 Join Acou_Bass [0] (~Acou_Bass@host-89-241-250-248.as13285.net) 07.25.49 Quit Acou_Bass (Read error: Connection timed out) 07.37.55 Quit ungali (Quit: ungali) 07.52.03 Quit PurlingNayuki (Quit: PurlingNayuki) 07.54.55 Join goom [0] (~goom@cpe-66-25-153-174.satx.res.rr.com) 08.03.28 Quit hunterleo (Quit: Page closed) 08.04.18 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170) 08.52.53 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 08.56.34 *** Saving seen data "./dancer.seen" 09.08.58 Quit jhMikeS (Ping timeout: 252 seconds) 09.09.21 Quit johnb3 (Ping timeout: 264 seconds) 09.48.35 Join ender` [0] (krneki@foo.eternallybored.org) 09.53.35 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 09.54.24 Quit johnb3 (Client Quit) 09.54.50 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 09.59.09 Quit johnb2 (Ping timeout: 240 seconds) 10.06.36 Join cc___ [0] (~ac@2001:910:113f:1:6a05:caff:fe1c:1627) 10.06.52 # what's rocker 10.30.21 Quit dys (Ping timeout: 255 seconds) 10.39.13 Join dys [0] (~dys@ip-109-40-0-171.web.vodafone.de) 10.39.28 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 10.51.43 Join pamaury [0] (~pamaury@rockbox/developer/pamaury) 10.56.38 *** Saving seen data "./dancer.seen" 10.58.42 Join xorly [0] (~xorly@ip-89-176-102-19.net.upcbroadband.cz) 10.59.42 # https://www.amazon.com/Bluetooth-Resolution-Lossless-Audiophile-Supports/dp/B01MZ50M0Y/ref=sr_1_1?ie=UTF8&qid=1486202232&sr=8-1&keywords=agptek+rocker 11.00.52 # ah hunterloo is gone 11.01.58 # the player looks cool 11.02.08 # if they can give the datasheet for the X1000 I can make the port 11.02.37 # I don't think ingenic has released the full programming manual of it 11.04.40 Quit goom (Quit: Leaving) 11.21.43 Join lebellium [0] (~chatzilla@89-93-177-91.hfc.dyn.abo.bbox.fr) 11.27.48 # pamaury: on the forum he gave this link http://www.ingenic.com/en/?product/id/9.html and says there is everything we need there but http://www.ingenic.com/ftp://ftp.ingenic.com/SOC/X1000/X1000_DS.pdf gives 404 error... 11.29.53 # this works ftp://ftp.ingenic.com/SOC/X1000/X1000_DS.pdf 11.30.02 # 46 pages datasheet 11.32.26 # 46 pages is not enough, it's incomplete 11.33.40 # maybe write it on the forums. I feel he'll be difficult to catch on the IRC due to the time zone 11.39.45 Join petur [0] (~petur@rockbox/developer/petur) 11.43.31 Quit johnb2 (Ping timeout: 252 seconds) 12.29.20 # sure 12.41.28 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 12.47.27 Quit StaticAmbience (Ping timeout: 240 seconds) 12.56.42 *** Saving seen data "./dancer.seen" 13.04.35 Join jb__ [0] (0245a0c8@gateway/web/freenode/ip.2.69.160.200) 13.06.43 # pamaury: I'm looking at fuze+ button-driver and gestures. The debug screen detection of "flicks" seems OK to me in comparison to not having gestures at all. 13.08.22 # pamaury: seems it would be fairly harmless to map hardware flicks to up/down/left/right buttons? 13.08.47 Quit petur (Ping timeout: 240 seconds) 13.09.11 Join MrZeus [0] (~MrZeus@2a02:c7f:7008:3400:fd52:2d4e:7071:2f11) 13.13.37 Join Malte__ [0] (d9eb20fe@gateway/web/freenode/ip.217.235.32.254) 13.15.47 # Hey guys! I'm currently removing the volume limit of my brother's Sony NW-A30 and it's looking good. But now I'm told to "reset the settings on the device to get the modification applied". What exactly does that mean?. 13.17.23 Quit xorly (Ping timeout: 260 seconds) 13.19.05 # jb__: it seems to me that the way the hardware detects flicks makes it really unnatural 13.19.36 Join gbl08ma [0] (~gbl08ma@ec2-52-23-151-127.compute-1.amazonaws.com) 13.20.14 # just detecting flicks is useless unless it's really integrated in the UI. For example what it naturals is if you start scrolling the touchpad and it scrolls the list. It you just flick and it goes up/down one element, that's really useless 13.20.32 # pamaury: agreed ... 13.20.32 # Malte__: find the factory reset menu entry 13.21.05 # How do I do that? 13.21.10 # pamaury: but the work to implement visual feedback like that is more than I could "deal with" 13.21.22 # Malte__: look in the menus, nobody has a A30 around so we don't know ;) 13.21.30 # Probably in Settings 13.22.01 # pamaury: and I keep instinctively flicking the screen touching various buttons. 13.23.12 # pamaury: left/right makes sense with the rb ui. left enters a folder/submenu and right returns. 13.23.49 # jb__: I think some people had patches to implement a virtual "scroll wheel" on the touchpad, I haven't tried it but a virtual wheel doesn't seem natural to me. I know that the touchpad UI i suboptimal 13.23.59 Join StaticAmbience [0] (~Quassel@host217-42-102-36.range217-42.btcentralplus.com) 13.24.00 # Ok: Reset means that I have to reset the device to its factory settings, right? 13.24.35 # flicking up/down is also easier than to find the right area on the pad for up/down 13.25.04 # Malte__: Sony changes the UI over time but on the E585, That's Settings > Common Settings > Format/restore, something like that 13.26.55 # jb__: yes but that means more code, and it's not trivial because it's context dependent 13.27.05 # ie scrolling up/down doesn't make sense in all contexts 13.28.04 # Got that. Ok. Now I have to choose between "Reset all setting", "Format System storage", "Rebuild Database", "Restore to factory configuration" 13.28.10 # pamaury: why not just map flick up to ~ BUTTON_UP? 13.28.21 # jb__: it will do not good 13.28.25 # Malte__: reset all settings 13.28.36 # because one flick = one up, not useful in a list 13.30.01 # pamaury: agreed ... but flick up right now means in order: BUTTON_DOWN, BUTTON_SELECT, BUTTON_UP 13.30.51 # yes, but given that we don't control flick detection (it's done by hardware), that would mean waiting to see if hardware see a flick, if not report other buttons 13.31.02 # that introduces a unatural delay in the interface 13.31.16 # like you press and wait 100ms before the action 13.31.45 # pamaury: agreed. but the tap-gesture seems to be 300 ms. is it configurable? 13.31.49 # if you want to make it work at least a bit smoothly, you need to detect gesture in software 13.32.00 # it's partially configurable 13.32.34 # but I still think software is the only way to go 13.32.59 # for example maybe the driver can issue repeat events when you smoothly scroll your finger up 13.33.21 # ok. the button driver only seems to return button-events 13.33.22 # jb__ I tried gestures and even tried tweaking them what worked best was tweaking sensitivity and dead zone and using it as reqular buttons 13.33.37 Quit StaticAmbience (Ping timeout: 276 seconds) 13.34.24 # Bilgus: ok. 13.34.32 # Sadly I think what would work better is for the touch pad to select an action and the volume rocker to change it SAD. 13.35.53 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 13.35.59 # It is rather unfortunate Sansa did that I wonder what kind of BOM savings they had 13.38.43 # there is something called kinetic scroll for touchscreens. it seems to read touch-coordinates directly. 13.38.56 # yes but touch screen is completely different 13.39.01 Join xorly [0] (~xorly@ip-89-176-102-19.net.upcbroadband.cz) 13.39.09 # it assumes a touch... screen ! 13.39.15 # coordinates have to map 1 to 1 13.39.52 # for touchpad you want a touchschreen-like mode that have kinetic scrolling but understand that the touchpad coordinate don't map to the screeb 13.39.59 # the button driver could scale the pad coordinates. 13.40.16 # no that won't work well 13.40.31 Quit johnb3 (Ping timeout: 248 seconds) 13.40.54 # because touchscreen either work in up/down/left/right emulation, or real touch screen, ie you "click" on button 13.41.09 # you can't click on a button you don't see with a touchpad 13.41.20 # or the kinetic scroll could use coordinates relative to its source, like: x/MAX_TOUCH_X (?) 13.41.44 # pamaury: I get it, but to use kinetic scroll to achieve visual feedback for swiping 13.41.53 Quit Malte__ (Quit: Page closed) 13.42.31 # yeah but what the point of kinetic scrolling if it ruins everything else ? 13.42.46 # pamaury: the button driver only seems to return button events. I don't really understand how software gestures would work. would it simulate a series of button presses? 13.43.36 # pamaury: I don't know the code well enough. I thought maybe it could be generalised to touchpads with lists 13.45.15 # I have to disappear for 15min, I can explain how it works, you'll understand why none of the existing code/approach can work 13.46.01 # thanks! 13.49.43 Join paulk-blaze [0] (~paulk@37.164.35.21) 13.58.31 Quit paulk-blaze (Remote host closed the connection) 13.58.59 Join paulk-blaze [0] (~paulk@37.164.35.21) 14.05.18 Quit paulk-blaze (Ping timeout: 255 seconds) 14.09.18 Join markun [0] (~markun@rockbox/developer/markun) 14.10.08 # jb__: the way it works, the button only reports which key(s) are pressed at any given moment. For touchscreen it also reports the (x,y) of the touch if any, the same can be done for touchpad. Anything else is upper layers. Keys repeats for example are not handled in the button driver 14.10.19 # thus you cannot simply implement kinetic scrolling in the button driver 14.10.59 # the way the touchscreen works is like this: 14.11.53 # each screen (list, wps, etc) reports whether or not it can handle touchscreen. If not, a middle layer uses "gird mode" where it split the screen into 9 square buttons and the screen can pretend the device has 9 buttons 14.12.20 # if the screen handle touchscreen, it only gets (x,y) of touch and whether or not the user touches the screen, and it has to deal with it 14.13.03 # and what it usually does is that it looks for gesture, BUT if the user presses a point and release (ie like a click), it has to do something with it, because it's not a gesture 14.13.18 # so it handles like a regular UI, like a mouse click: is a button at (x,y) ? 14.13.31 # clearly this doesn't work with a touchpad 14.13.51 # if you do a "click" on a touchpad, this is not like a mouse, it's more like a button press 14.14.27 Join skapazzo [0] (~skapazzo@151.9.205.1) 14.14.37 # furthernore, on a touchscreen, there is something obvious: the touchscreen as the same size as the screen, so the ui can "track" the finger to make the visual feedback consistent with what the user expects 14.15.22 # on a touchpad, there is no such relationship, in fact you really DONT want to rescale the coordinate to map the screen, because say you scroll your finger from top to bottom of the touchpad 14.16.12 # then you expect the list to go down by the same "distance", so if you screen is 3 times bigger than the touchpad, a full top to bottom slide only move 1/3 of the screen, unless it's a flick and kinetic scrolling kicks in 14.16.39 # summary: touchscreen and touchpad share some features, but the way they use them to provide a nice UI are fundamentally different to me 14.17.04 # yes I agree. thanks for the explanation 14.17.34 # so the proper approach, which is not necessarily complicated, just needs some work, is to do like a touchscreen: 14.18.01 # each screen reports whether it can handle touchpad (by default they don't so it's easy), if they do they have to do something about it 14.18.14 # and then you can most probably reuse some code from kinetic scrolling for touchpad 14.18.26 # a new list implementation for touchpads like for touchscreens? 14.19.15 # yeah, they most probably share a lot of elements, but the list needs to know it's a touchpad 14.19.34 # how would the list know touchpad coordinates? 14.20.10 # the button driver would report them, like for touchscreen 14.23.04 Quit johnb2 (Quit: Nettalk6 - www.ntalk.de) 14.23.17 # PAMAURY I've beenn messing around with putting a marker at the end of the FW and I don't think it is going to work AFAICT .codec gets defined .plugin marks the end and then takes up everything after? 14.24.07 # Bilgus: you need to get familar with linker script, there is a fundamental difference end of *binary* and end of *memory* 14.25.12 # the end of the binary is never at the end of the linker file 14.25.15 # ah so really the binary stops before either of those 14.25.22 # yes 14.26.57 # pamaury: it looks like coordinates might be put in higher bits by the touchscreen get_button_data(), then action_get_touchscreen_press() extracts them 14.27.24 # that's how it works for touchscreen yes, the button data is used to report aux data 14.27.37 Nick zoid is now known as ClintonBot (~zoid@unaffiliated/taxationistheft) 14.28.41 Nick ClintonBot is now known as zoid (~zoid@unaffiliated/taxationistheft) 14.29.18 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab) 14.29.24 # Bilgus: I can send you an example for the imx233 (like fuze+) 14.30.35 # does every touchscreen get_button_data need to be ifdeffed, or does it not lead to chaos? 14.31.18 # jb__: I'm pretty sure the entire touchscreen code is ifdefed already 14.32.53 # jb__: if you want to work on that, I can send you a POC that create the touchpad mode and shows you where are the gaps to fill 14.34.07 # pamaury: fantastic 14.34.58 # pamaury: don't plugins use get_button_data(), for example? 14.36.30 # I don't remember, the thing is that button data is a generic mecanism to get aux button data but it only makes sense if you know how to interpret it. Thus I expect any use of get_button_data() is ifdef because otherwise it doesn't make sense 14.36.48 # got it 14.37.01 # I think so far touchscreen is the only user of button data 14.37.33 Quit APLU (Ping timeout: 264 seconds) 14.39.27 # it seems like more work than I was hoping for, but I'll look at this in my spare time. Touchpads make more sense than touchscreens for tiny devices, where touch areas are small and the fingers cover the screens 14.43.52 Quit paulk-blaze (Remote host closed the connection) 14.44.13 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab) 14.44.42 # jb__: to be honest I don't know how much touchscreen and kinetic scrolling are integrated. If they is some clean separation between them, it could be less work than expected 14.46.18 # pamaury: ok, so what does the button driver need to do? 14.47.42 # pamaury: there needs to be some detection as to what are taps, long presses, swipes ... smartphones wait until the finger is lefted to send a "click" 14.47.50 # what I will do in the POC I'll send you (maybe tomorrow) is to make the button driver do like touchscreen: it calls a library function that depending on touchpad mode either reports position or button. The difference with touchscreen is that the touchpad probably needs to give the callback the location of button "on the touchpad" 14.48.23 # then in the list gui code, introduce a touchpad mode that only looks at position and decide what is gesture and what is not 14.48.58 # I expect the gesture code can be reused, after all it's the same thing on touchscreen and touchpad, but what you make of it is different 14.49.25 Quit gbl08ma (Remote host closed the connection) 14.49.37 Join APLU [0] (~mulx@eva.aplu.fr) 14.53.34 Join Senji [0] (~Senji@85.187.103.250) 14.55.52 # pamaury sure that would be helpful might explain why I init and can't find it in the binary 14.56.30 # Bilgus: give me 5 min, I'll send you an example 14.56.43 # take your time thanks 14.56.45 *** Saving seen data "./dancer.seen" 15.00.27 # Bilgus: actually now that I am thinking about it, it may no be that easy for a non-obvious reason: many targets organize their binary like this: 15.00.27 # |code|data|code that goes to iram|data that goes to iram| 15.00.27 # but when loaded to memory and initialise, it actually looks like: 15.00.27 DBUG Enqueued KICK pamaury 15.00.27 # |code|data|bss| 15.00.27 # so the end of binary is overwritten in RAM. 15.00.29 # The proper approach would be to store the header somewhere in the binary, but put the OFFSET to it at the end of the binary 15.00.47 # that's what I will do in the example I'll send you 15.02.10 # awesome thats probably it since I can place it higher and find it but each time I go further than data it disappears 15.04.41 Join smoke_fumus [0] (~smoke_fum@dynamic-vpdn-93-125-62-122.telecom.by) 15.11.06 Join furrywolf [0] (~randyg@72-57-27-185.pools.spcsdns.net) 15.15.26 # what are the hopes of achieving left/right screen transitions, like on smartphones or ipod nano? 15.15.45 # none, hopefully. 15.16.00 # there is need to render the next framebuffer just as the swipe is detected 15.16.18 # furry: =) 15.18.12 # I doubt this would be much liked in the actual UI but maybe in a theme? 15.18.25 # jb__: transition, 0% if you want the left and right screen to smoothly transition. If you just think of "I swipe, it changes screen", that probably doable 15.22.08 Join MrZeus1 [0] (~MrZeus@2a02:c7f:7008:3400:b0e7:24b8:50fe:7a94) 15.22.32 # ok 15.23.45 Quit MrZeus (Ping timeout: 255 seconds) 15.27.12 # Bilgus: g#1551 15.27.14 # 3Gerrit review #1551 at http://gerrit.rockbox.org/r/1551 : 3Implement magic section. by Amaury Pouly 15.28.13 # it's implement for imx233 with a small example 15.29.43 # awesome you make it look freaking easy 15.30.34 Quit paulk-blaze (Remote host closed the connection) 15.30.52 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab) 15.31.02 # Bilgus: the trick is that each linker script is a bit different and needs to be modified carefully 15.32.51 # yeah I see where they have different sections ahead/behind 15.34.50 # basically it should be last section that is not a NOLOAD section 15.34.54 # that's a good rule of dumb 15.37.27 Quit paulk-blaze (Ping timeout: 240 seconds) 15.45.51 # now since this has a pointer to the offset without need to search it doesn't need to be a string anymore correct I could now make it a long with a few bytes in it for verification correct? 15.46.25 # the actual data not the rbmagic0 15.48.21 # Bilgus: yes, I still suggest you start the data in the magic section with a small (4-byte) magic value just in case 15.48.32 # (cause any failure would basically overwrte code, which is BAD) 15.49.37 # another approach to this problem would be to modify crt0.S and make the bootloader pass a pointer to some aux data 15.49.51 # I think this would be cleaner 15.50.05 # I'll put another patch on gerrit to compare both approaches 15.55.18 Quit jb__ (Ping timeout: 260 seconds) 15.59.06 # :\ you have other stuff to work on ill start investigating that haha I forgot this is all BE 16.17.30 Quit zoid (Quit: www.taxationistheft.com) 16.18.22 Join zoid [0] (~zoid@159.203.108.115) 16.19.40 Quit zoid (Changing host) 16.19.40 Join zoid [0] (~zoid@unaffiliated/taxationistheft) 16.28.19 # Bilgus: there yet an approach 16.28.34 # since on virtually all targets, the code in crt0.S is at the very beginning of RAM 16.28.56 # one could say that the boot data must within (say) the first 1024 bytes of the binary 16.29.01 # and simply put it in crt0.S 16.29.11 # thus the search for it is always quick and it's easy to implement 16.29.37 # *yet another 16.30.51 # so keep the header intact and tag the data with magic but search for it 16.31.14 # yes, but you only look for it at the very beginning of the binary 16.31.26 # and it's up to the target crt0 code to figure out how to implement that 16.32.58 # it makes a lot of sense because basically it means "look for special header in the 1024 after entry point of binary" 16.33.36 # now how would I read the data though or would I just write the data I want init directly to the crt and let it init the var? 16.34.12 # let me send you an example 16.35.35 # Build Server message: 3New build round started. Revision 96a7603, 255 builds, 17 clients. 16.35.38 # no thats 'P amaury please show me how this works' 16.36.51 # one thing that is good about this approach is that you need to change all crt0.S BUT there are less than one per target 16.37.18 # also it's essentially target agnostic because all assemblers support the same directives 16.41.36 # Bilgus: are you familiar with gnu assembler ? 16.44.09 # I programmed TI calcs in it in HS and did some on a Heathkit HERO in HS so familiar with assembler yes fluent no 16.45.30 # Build Server message: 3Build round completed after 596 seconds. 16.45.31 # Build Server message: 3Revision 96a7603 result: All green 16.47.28 # I suggest you read ftp://ftp.gnu.org/old-gnu/Manuals/gas/html_chapter/as_7.html#SEC98 and http://www.cse.unsw.edu.au/~cs3221/labs/assembler-intro.pdf to understand the code I will post 16.47.46 # k 16.56.49 *** Saving seen data "./dancer.seen" 17.01.43 # Bilgus: g#1552 17.01.44 # 3Gerrit review #1552 at http://gerrit.rockbox.org/r/1552 : 3Add boot data support to rockbox. by Amaury Pouly 17.02.24 # pamaury: you'll get probably a sample from the AGPtek rep but it's also available on Amazon.fr - €50 https://www.amazon.fr/Bluetooth-Lecteur-Musical-ROCKER-Memoire/dp/B01NBRJBOH/ 17.02.28 # I guess I'l buy it :D 17.05.27 # lebellium: we'll see, I answered on the forum. The player looks cool, I'll buy it if he doesn't send me a sample ;) 17.06.05 # Bilgus: I included a small debug meny entry to view the data, just as a proof of concept 17.06.52 # hopefully the code is self-expanatory: we declare the C structure as extern and we implement it in the crt0.S 17.06.57 # Nice I just pulled it that looks a lot cleaner already 17.06.59 # to share code, I implement use a assembler macro 17.07.22 # which should in theory work on all assemblers on all targets, so it's only a matter of adding "put_boot_data_here" in al crt0.s 17.07.38 # possibly one could #ifdef all of that behind HAVE_BOOT_DATA 17.07.52 # you need to choose a particular crc algorithm 17.08.03 # and then have the bootloader fill the structure of course 17.12.32 # I'll try this out and come back once I understand it better 17.16.39 # Build Server message: 3New build round started. Revision 501e8a7, 255 builds, 17 clients. 17.24.45 # Build Server message: 3Build round completed after 486 seconds. 17.24.46 # Build Server message: 3Revision 501e8a7 result: All green 17.24.47 # Build Server message: 3New build round started. Revision 1245c5f, 255 builds, 16 clients. 17.40.17 # Build Server message: 3Build round completed after 931 seconds. 17.40.18 # Build Server message: 3Revision 1245c5f result: All green 17.40.19 # Build Server message: 3New build round started. Revision d787191, 255 builds, 16 clients. 17.48.36 # Build Server message: 3Build round completed after 499 seconds. 17.48.37 # Build Server message: 3Revision d787191 result: All green 18.03.42 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de) 18.05.48 # Mihail: On the read-only internal memory, do you think there is a chance to remove the partition? Would the bootloader from early last year try to load RB from the SD card? 18.07.26 Quit PurlingNayuki (Remote host closed the connection) 18.08.54 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170) 18.22.27 Quit johnb2 (Ping timeout: 258 seconds) 18.26.43 Join edhelas [0] (~edhelas@145.133.43.230) 18.31.03 Ctcp Ignored 1 channel CTCP requests in 0 seconds at the last flood 18.31.03 # * __builtin would love to help with a Rocker port... but I'm not sure if I'm qualified enough :/ 18.31.13 # <__builtin> dang it, verbs 18.32.59 # __builtin: I'll do the port, assuming they can provide at the datasheet for the soc 18.33.07 # s/datasheet/programming manual 18.33.58 # They necessarily have it or could they do their home firmware without? 18.34.48 # lebellium: I guess they could have done it without, if for example they bought the SDK from ingenic or hire ingenic to do the base port and they just did the cutomization 18.35.05 # ingenic released some source for the X1000 but to be honest, code is a super annoying source of documentation 18.35.55 # He said they hired the FiiO team but I don't know if it was only for the customization 18.36.17 # yeah that needs to be clarified 18.38.02 # I need to search in ingenic FTP 18.38.03 Join ulmutul [0] (~chatzilla@dslb-188-102-002-126.188.102.pools.vodafone-ip.de) 18.38.10 # they release a lot of doc but never advertise it 18.39.45 # * pamaury thinks he found it 18.39.54 # http://198.13.102.98/bj/ingenic_support/X1000_X1000E_X1500/02_HW/01_Phoenix/Phoenix_V2.0/03Datasheet/X1000_PM_20150918.pdf 18.42.07 # nice! 18.42.54 # by the way, it looks like the AGPTek Rocker is only a rebranded Benjie T6 http://www.benjie-tx.com/MP3HiFiPlayer/224.html 18.42.57 # <__builtin> it even tells you how to boot from USB :) 18.43.20 # apparently they didn't change the usb boot mode, that's cool 18.43.39 # I'm confused now about what AGPtek really did 18.43.55 # Did the take the existing hardware and just customized their own firmware? 18.44.01 # they* 18.45.13 # jb__, pamaury: seems like someone may be interrested in g#1199 :) 18.45.15 # 3Gerrit review #1199 at http://gerrit.rockbox.org/r/1199 : 3POC Fuze+ Scrollstrip support by Sebastian Leonhardt 18.45.25 # ulmutul: I know but I don't like the approach 18.45.59 # Why not? 18.46.24 # a scrollstrip on a touchpad doesn't feel very natural to me 18.46.47 # also the way it is implemented is strange 18.46.55 # it doesn't reuse any of the scrollwheel code afaict 18.47.19 # I wouldn't be against a knob to select between button/scrollwheel/kinetic touchpad 18.47.36 # but the scrollwheel should at least be implemented with the usual scrollwheel framework 18.49.29 # Hm, I don't know if the wheel framework would work for it. The wheel code for example don't support button actions afaict. 18.50.05 # The whole thing is more or less the atempt to write a scrollstrip framework (for strip targets mainly) 18.50.50 # ah sorry, I thought that was the scrollwheel patch ;) 18.50.58 # ok but then my reproch is the same 18.51.03 # this is way too low level 18.51.24 Join maffe [0] (~Miranda@p3EE3A0F9.dip0.t-ipconnect.de) 18.51.39 Nick maffe is now known as bufgix (~Miranda@p3EE3A0F9.dip0.t-ipconnect.de) 18.51.44 # the proper approach, I believe, is to do like touchscheen: it has to be handle at the UI level so you can properly implement things like kinetic scrolling 18.52.22 # this what I'm working on right now, at least a POC 18.56.50 *** Saving seen data "./dancer.seen" 18.57.39 # I postet at the forums some time again: http://forums.rockbox.org/index.php/topic,51426.0.html 18.57.40 # Whoever want's to test the touch can download a compiled built. I'm still waiting for feedback about the best way to handle long button presses ;) 18.59.15 # * ulmutul will look how it's done for touchscreens. 19.01.04 # pamaury: have you tested it yet? 19.01.16 # no 19.02.20 # but in the worst case, it is possible to have a setting between various modes, like touchscreen 19.10.43 Quit markun (Quit: leaving) 19.11.06 Join jhMikeS [0] (~jethead71@d192-24-173-177.try.wideopenwest.com) 19.15.41 # but I'll try the patch 19.16.15 # I feel quite fooled actually. I thought they selected some proper hardware for Rockbox and designed the player around it. But they only choose which existing device to rebrand... 19.16.40 # yeah sounds weird 19.28.31 # I'll see if I cancel my order to get the original device cheaper when it getsreleased on some Chinese webshop like aliexpress 19.28.36 # pamaury i'm sorry to bother you again I'm trying to make the fuze+ imx boot loader and I keep having problems making the mkimxboot 19.29.04 # Bilgus: you'll have to be more precise ;) 19.30.27 # Bilgus: most probably you are missing some libs ? 19.30.31 # sbtools and undefined reference to `vtable for CryptoPP::HashTransformation 19.31.02 # ubuntu@ubuntu-VirtualBox:~$ whereis libcryptopp.a 19.31.02 # libcryptopp: /usr/lib/libcryptopp.so /usr/lib/libcryptopp.a 19.31.02 # ubuntu@ubuntu-VirtualBox:~$ whereis crypto.cpp 19.31.02 DBUG Enqueued KICK Bilgus 19.31.02 # crypto: /usr/src/linux-headers-3.2.0-113/crypto /usr/src/linux-headers-3.2.0-113-generic/crypto /usr/share/man/man3/crypto.3ssl.gz 19.31.02 # ubuntu@ubuntu-VirtualBox:~$ 19.31.39 # smells like a linker order problem with old gcc, wait a minute 19.32.55 # Bilgus: in rbutil/mkimxboot/Makefile, try to replace 19.32.55 # LDFLAGS += -lcrypto++ 19.32.55 # by 19.32.55 # LDOPTS += -lcrypto++ 19.34.06 # LOL 19.34.44 # that was it like 2 seconds 19.36.44 # thanks I think i would have never figured that out 19.45.35 # Bilgus: if you want to speed up dev, you can use mkimxboot to create a singleboot image, and then upload in a recovery mode using sbloader 19.45.58 # it avoids the flashing stage (but of course needs to be done on each boot) 19.46.51 # hmm then I assume if it crashes I'm able to revert on next reboot? 19.47.55 # you can always use the OF to reflash (as long as you flash dualboot image) 19.48.08 # the advantage of using recovery mode that it avoid flashing, thus is much faster 19.51.11 # sounds nice, i'll try that 19.51.34 # just make sure you don't flash the singleboot image, that would be longer to recover 19.55.48 # ok so make a single boot image to use sbloader just besure not to actually flash it to the device then? 19.56.31 # yes 19.56.48 # to make singleboot image, do mkimxboot -i ... -b ... -o ... -t singleboot 20.07.00 Quit PurlingNayuki (Quit: PurlingNayuki) 20.07.15 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170) 20.36.14 Quit igitoor_ (Ping timeout: 258 seconds) 20.38.59 Join igitoor [0] (igitur@2a00:d880:3:1::c1ca:a648) 20.39.58 # pamaury BOOT_DATA_SEARCH_SIZE how is that guaranteed to be the case just a general assumption based on the size of our firmware? 20.44.22 # nm I just realized its the placement within the crt file 20.45.37 Quit igitoor (Changing host) 20.45.37 Join igitoor [0] (igitur@unaffiliated/contempt) 20.48.38 # Bilgus: yeah placement in the file 20.49.26 # 1024 gives you about 256 instructions, I doubt any crt file uses more than, so if you just put it after the last instruction in crt0 it should be within the window 20.50.01 # pamaury: Benjie T6 marketed but looks like it's called K1 internally, what a mess... https://f.lnwfile.com/_/f/_raw/n0/x8/s7.jpg 20.52.26 # lebellium: lol indeed 20.53.14 # lebellium: isn't the agptek supposed to come with a touchpad/touchwheel ? 20.54.07 # ah apparently not 20.54.44 # I am kind of confused about how the chinese market works anyway, they seem to have clones of clones of clones 20.56.54 *** Saving seen data "./dancer.seen" 21.06.00 # I hope the AGPTek rep will explain a bit about their business 21.06.20 # but that will probably be confusing as all his earlier posts 21.25.46 Join Strife89 [0] (~quassel@adsl-98-80-194-33.mcn.bellsouth.net) 21.28.06 Quit Strife1989 (Ping timeout: 255 seconds) 21.30.10 # lol clone of clones 21.30.18 # youre not wrong there 21.53.51 Quit bufgix (Quit: IRC ist obsolet!) 22.01.24 Quit edhelas (Ping timeout: 255 seconds) 22.05.47 Quit michaelni (Ping timeout: 240 seconds) 22.11.00 Join wodz [0] (~wodz@89-74-169-198.dynamic.chello.pl) 22.11.59 Join girafe [0] (~girafe@LFbn-1-11729-221.w2-7.abo.wanadoo.fr) 22.13.44 # pamaury: Did looled at x1000 pm to see how much of the blocks from earlier families are reused? 22.14.20 # wodz: not yet 22.15.29 # pamaury: It has 2nd level cache which afaik was missing in earlier families 22.16.26 # wodz: a quick look suggest some blocks are similar but overall there might be many differences 22.18.28 # yeah the L2 cache is new 22.18.33 Join michaelni [0] (~michael@213-47-41-20.cable.dynamic.surfer.at) 22.19.04 # that will need special care potentially, the manual says "Programmer transparent, that is, those CACHE instructions 22.19.04 # managing L1 cache can manipulate L2 cache automatically" 22.19.08 # don't know what it means 22.19.22 # ugh 22.20.15 # pamaury: It says it is mips32r2 compatible core :) 22.20.20 Join Strife1989 [0] (~quassel@adsl-98-67-60-3.mcn.bellsouth.net) 22.21.05 # wodz: non full pipelined implementation for most of MIP32 integer instruction release II 22.21.18 # I say, wait until I test 22.21.28 # pamaury: yeah 22.21.33 # because jz4760b claims to be mips32r2 and doesn't implement some stuff 22.24.20 Quit Strife89 (Ping timeout: 264 seconds) 22.24.23 # what would be helpful is if they can send me sample player and one with debug stuff wired 22.24.40 # assuming they even have it 22.28.05 # pamaury: That depends how they approached firmware port. If it was only customization they might not have it 22.34.05 # pamaury how robust do you think my checksum needs to be can do a simple xor of magic0,1 length and payload or should I be looking for something better? 22.41.14 # Bilgus: I think the checksum should only consider the payload, and I don't think it needs to be super robust, but just make sure that the initial configuration (ie what put_oot_data_here) is invalid, so the code can detect that the bootloader didn't touch the boot data 22.42.36 # a sum sounds better that a xor in this case I think 22.42.43 # ohh I wa planning on using that to verify we had the right information before writing with the boot loader 22.42.45 # wodz: any suggestion on that ? 22.43.27 # pamaury: could you give a bit of context? 22.45.26 # Bilgus is implementing a mecanism by why the bootloader can pass some data to the firmware. The goal is for the bootloader to tell rockbox what the volume to mount as /, and so to be able to boot from SD. 22.45.50 # The implementation I suggested is g#1551 22.45.52 # 3Gerrit review #1551 at http://gerrit.rockbox.org/r/1551 : 3Implement magic section. by Amaury Pouly 22.46.15 # err, g#1552 22.46.17 # 3Gerrit review #1552 at http://gerrit.rockbox.org/r/1552 : 3Add boot data support to rockbox. by Amaury Pouly 22.46.51 # rockbox embeds a structure with a magic value, then a length, crc and payload, and the bootloader fills this payload before jumping to the firmware 22.48.23 # that sounds sane so far 22.48.38 # and the question is: what kind of crc to use 22.49.56 # that depends how much space in bootloader can we afford. crc32 is not usually big and is already present in main binary 22.51.09 # I don't know if crc32 is already compiled in the bootloader or not 22.51.12 Ctcp Ignored 1 channel CTCP requests in 0 seconds at the last flood 22.51.12 # * pamaury checks 22.51.16 # here is what I have so far http://pastebin.com/tFRk77qv 22.52.22 # Bilgus: I think crc32 is already compiled in anyway, so it's a good choice indeed 22.53.41 Join ZincAlloy [0] (~Adium@2a02:8108:8b80:1700:e818:b30d:c507:6059) 22.53.48 # Bilgus: I have many comments ;) 22.54.15 # do tell.. 22.56.54 # I suggest you push to gerrit but basically: 22.56.54 # - crc should apply to all payload: bootdata->crc = crc32(crc->payload, crc->length); // not sure about crc_32 prototype 22.56.54 # - why 0x52622300 | boot_volume and not just boot_volume ? 22.56.54 # - regarding boot_volume, I'm not 100% sure how you plan to implement the "mount Nth volume as /" part, but we'll see 22.56.54 # - for(i = 0;i <= (BOOT_DATA_SEARCH_SIZE - sizeof(struct boot_data_t));i++) -> why BOOT_DATA_SEARCH_SIZE - sizeof(struct boot_data_t) ? 22.56.56 # - if (len < BOOT_DATA_SEARCH_SIZE) -> why 22.56.57 *** Saving seen data "./dancer.seen" 22.56.58 # for the last two things, I would rewrite the loop as: 22.57.00 # int search_len = MIN(len, BOOT_DATA_SEARCH_SIZE); 22.57.02 # for(i = 0;i <= (search_len - sizeof(struct boot_data_t));i++) 22.57.52 # also don't forget to memset(payload, 0, len) 22.59.27 # | with the boot_volume is just to allow there to be something in there to check against since its at most a single byte 22.59.58 # figure it typically will be 0 or 1 maybe 2 23.01.03 # Bilgus: with the crc check that's kind of useless no ? 23.01.10 # or just make boot volume a uint8_t 23.01.38 # ill return the actual volume name with get_volume_name(x, buf); once in the firmware 23.01.45 # regarding boot volume, depending on the implementation, I am not sure it should be the boot volume actually 23.02.16 # but that depends on how it's implemented 23.03.44 # if I'm only going to use uint_8 the payload gets way smaller still is there anything else you think I should be passing? 23.04.40 # what do you mean the boot volume actually? you think instead we should be passing back the string /.rockbox or something? 23.06.26 # Bilgus: not it's doesn't make sense to give the string. What I'm saying is that multidrive => multivolume, so in theory there can even be multiple volume on each drive. So the only way you can find the "Nth volume" is to try to mount all partition in the usual order, but then volume 0 will be / and you wanted volume N so you'll have to "exchange" them, if that makes sense 23.06.33 # just look at disk.c 23.06.55 # * pamaury looks to be sure 23.08.03 # yeah in disk_mount 23.08.15 # there isn't a one to one relationship between drive and volume 23.08.56 # no in multi volume its drives * num of volumes 23.10.16 # so what I'm saying is that if I give you a volume number 23.10.27 # there is no easy way to find even on which drive it is 23.10.57 # Ah short of looking at all the drives? I'm not sure how else to derive the booted volume 23.11.25 Quit wodz (Quit: Leaving) 23.11.46 # Bilgus: I don't know enough about how volume integrate with the file system to be honest 23.11.47 # figure In that other commit I have up on gerrit it just tries MAx_drives to 0 till it finds the one that sticks 23.12.00 # Max_volumes* 23.13.52 # probably be a good idea to talk to Michael I forget what his IRC handle is he says I had a thing started in the filesystem code that would allow any one volume to be mounted as the root directory (obviously only one because names could conflict if more are allowed). Would that help here? 23.15.08 # yes jhMikeS probably knows how to do that 23.16.12 # I suppose another idea is to pass back out a lookup array that will map element 0 to this boot drive 1 to the internal etc 23.20.16 # that's too complicated 23.21.14 # let's wait and see what jhMikeS says 23.21.45 # Ill ask jhMikeS what he needs to remap 23.35.27 # thanks for the guidance pamaury I'd still be stuck fiddling around with the linker 23.48.22 # aye, you actually got me interested in completing it :) 23.48.53 # what do i need to send to your function from the bootloader? 23.49.13 # can you explain? 23.49.51 # give me a few i'm heading out i'll get on my phone 23.49.59 # okay 23.51.45 # Bilgus: I'm going to bed but you should push to gerrit, updated my patch with your stuff, so that we can have an overview