73 lines
4.5 KiB
Plaintext
73 lines
4.5 KiB
Plaintext
[video member=miotatsu stream_platform=twitch project=riscy title="Searching Raw Memory for Unix Timestamps" vod_platform=youtube id=QqMESe9o1W4 annotator=Miblo]
|
|
[0:06][Recap and set the stage for the day[ref
|
|
site="SiFive Forums"
|
|
page="Lots of Questions… (RISCY BUSINESS Day 21)"
|
|
url=https://forums.sifive.com/t/lots-of-questions-riscy-business-day-21/434]][:research]
|
|
[0:40][Enable print_instructions() to print the board_id as a dereferenced int pointer]
|
|
[2:34][:Run the program to see our possible board_id]
|
|
[4:28][Read man 3 printf]
|
|
[5:01][Enable print_instructions() to print the board_id as a %X]
|
|
[5:28][:Run the program to see the same number]
|
|
[6:08][Enable print_instructions() to print the board_id cast to a short]
|
|
[7:29][:Run the program to see a different board_id]
|
|
[8:52][@hossein1387][The print for clock frequency is also bad]
|
|
[9:43][@hossein1387][No, I meant when the board printed out the value, the frequency was 600MHz]
|
|
[10:10][:Run the program to confirm the core frequency]
|
|
[11:34][Consult man 3 printf, and wonder whether the instability of the core frequency causes problems][:research]
|
|
[13:00][Hazard a guess as to what the Unix timestamp for our board may be]
|
|
[14:55][Enable print_instructions() to print the board_id cast to an int]
|
|
[15:39][:Run our program to view the output, and compare it with our guess]
|
|
[17:45][@hossein1387][I am getting around the same numbers]
|
|
[18:22][@hossein1387][I am getting ed93db27]
|
|
[18:54][Consult the table for the OTP Contents[ref
|
|
site="SiFive Developers"
|
|
page="SiFive HiFive1 Getting Started Guide"
|
|
url=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.2.pdf] and see if the board_id is documented in the Freedom E310-G000 Manual[ref
|
|
site="SiFive Developers"
|
|
page="Freedom E310-G000 Manual"
|
|
url=https://www.sifive.com/documentation/chips/freedom-e310-g000-manual/]]
|
|
[21:55][@hossein1387][I used uint64 and I got 12 Jun 1976]
|
|
[22:56][Try to convert ED93 to human date[ref
|
|
site="Epoch Converter"
|
|
page="Unix Hex Timestamp Converter"
|
|
url=https://www.epochconverter.com/hex]]
|
|
[23:58][@hossein1387][Oh, that's the Unix base date. January 1 1970, isn't it?]
|
|
[24:22][Consult Wikipedia on Unix time[ref
|
|
site=Wikipedia
|
|
page="Unix time"
|
|
url=https://en.wikipedia.org/wiki/Unix_time]][:research]
|
|
[26:32][Consult the table for the OTP Contents[ref
|
|
site="SiFive Developers"
|
|
page="SiFive HiFive1 Getting Started Guide"
|
|
url=https://static.dev.sifive.com/dev-kits/hifive1/hifive1-getting-started-v1.0.2.pdf]][:research]
|
|
[28:38][Enable print_instructions() to print the address and value of everything from 0x1004 to 0x1FE4]
|
|
[32:28][:Run our program and view the output]
|
|
[33:39][Pass both parameters to the printf() call in print_instructions()]
|
|
[34:45][:Run our program to view the correct output, and attempt to spot a plausible Unix timestamp amongst it]
|
|
[40:14][Ask @hossein1387 to print the hex value at 0x1634]
|
|
[40:33][Convert our value into a timestamp[ref
|
|
site="Epoch Converter"
|
|
page="Unix Hex Timestamp Converter"
|
|
url=https://www.epochconverter.com/hex] and consider this to be too early]
|
|
[42:05][@hossein1387][I have the exact same value as you]
|
|
[42:30][Enable print_instructions() to print from 0x1FE4 to 0x1FEC]
|
|
[44:21][:Run our program and see the output from one iteration]
|
|
[46:41][Try to enable print_instructions() to print further]
|
|
[47:13][:Run our program to see less output]
|
|
[48:17][Enable print_instructions() to print further]
|
|
[49:28][:Run our program to see a little more]
|
|
[50:34][@hossein1387][I can print from 0x0004 up to 0x2000, but 5714ae28 is the only valid one from what I can see]
|
|
[51:13][Make clean, and :run our program to see two iterations, 16 bytes apart]
|
|
[54:12][Try printing the lower end]
|
|
[54:48][:Run our program to see that it was also printing 16 bytes apart there]
|
|
[56:34][Increment the board_id pointer by one byte]
|
|
[57:47][:Run the program to view our more complete output, and attempt to spot a plausible Unix timestamp amongst it]
|
|
[59:44][Enable print_instructions() to only print out values between 0x57000000 and 0x58000000, but from a larger range in memory]
|
|
[1:03:10][A few words on the value of what we're doing, including pointer arithmetic]
|
|
[1:04:09][:Run the program to view our one hit, conclude that we do not have a reasonable Unix timestamp in that memory region, and report this on the forums[ref
|
|
site="SiFive Forums"
|
|
page="Lots of Questions… (RISCY BUSINESS Day 21)"
|
|
url=https://forums.sifive.com/t/lots-of-questions-riscy-business-day-21/434]]
|
|
[1:07:37][We are out of time for today]
|
|
[/video]
|