lok316 @ 09/09/17, 14:13
Maybe it's easier to finish
Mon 18/09 or
Mon, 18-09
Not a bit easier.
Digging into the firmware is similar to finding a needle in a thousand haystacks, since I have no names for the functions and addresses of the RAM. And you have to wade, hoping for intuition and luck, trying to understand what the function is responsible for at 0x12345678 and for which the RAM 0x87654321 is responsible.
And trying to flash your bracelet with a modified firmware is a big risk. Indeed, in the event of an error, the brick of the bracelet is no longer for me, but I don’t have a spare bracelet. Therefore, I only flashed it 2 times with a modification, when I was 100% sure of success.
lok316, but if you are ready to volunteer at the testers and flash my firmware during the experiments, then I can gladly try to change the date format to Mon. 18/09 or whatever you want.
For those who are interested in how the firmware was localized under the Russian language:
1. In the firmware were found icons that pop up with notifications on the bracelet. Further search expanded the image map: notification icons, action labels, 4 sets of numbers, icons of elements on the screen (steps / distance / calories, etc.) were found.
2. After structuring the data, it became clear that the developers of the firmware all data used in the functions (p.1) were loaded at the end of the firmware, and not after the description of each firmware. Therefore, byte by byte, step by step, an approximate table of firmware resources was compiled: first of all, these were icons and English letters, as well as hieroglyphs (it turned out that they were there too), as well as tagging with table resources and certain indices.
3. Then, on the basis of the obtained data, a table was found with the indication of addresses in English letters. The letters 27 (or 28) were in upper and lower case. As I expected, these were the letters used to output the month and the week. + A bit later, the indexes of the letters used were found, to display the month or date.
4. Accordingly, the localization plan was as follows:
a) under the space allocated for English letters, load our Russian letters.
b) in the address table for letters change the links to Russian.
c) interrupt the indices of the months and days of the weeks with analogous indices for Russian names.
5. But then problems surfaced:
a) The data in the firmware is not structured: icons can go, then letters appear, then tables are some, then letters again, then hieroglyphs, etc.
b) The width of the Russian letters (min 4, max 9) I got wider than the English (max width 7, min 1 [for i]) and they would not fit on the English letters.
c) Russian letters turned 29 and the table with links to the letters became wider and sneaked onto the next resource with icons.
6. Therefore, a cardinal decision was made - to rewrite one block the size of which is slightly less than 1,400 bytes of firmware from English. letters / hieroglyphs / tables of letters and tables of indexes of days of weeks and months on your unit with Russian letters, a table of Russian letters and indices of new days of weeks and months (I will say in advance - it took about a little more than 1300 bytes - due to no need to search for free space in the firmware).
7. But in order to do this, it was also necessary to change the links to these resources in the firmware functions. The search found the calls of these resources in the firmware and interrupted the addresses to the new ones used by me. It turned out in the end where it is 7-8 edits in different places.
8. Well, the result was the conclusion of the date in the Russian localization.
9. Although there are shoals, they are associated with the display (set the date of February 23), but this is fixable, change in the future.
10. To change the date format, as I said earlier, I still do not have enough knowledge in the firmware.