<p>I'd like to take a step back and focus on the core problem at hand: a clear definition of the point in time in the boot sequence, from which it is safe to use STDIO. We all agree, that this should as soon as possible, to allow for using STDIO early on during boot. If this is 'standardized', IMO there is no need for additional checking code if STDIO is available or not.</p>
<p>So what are the challenges:</p>
<ul>
<li>(a) different <code>stdio</code> implementations have diverging dependencies on <code>periph</code> and other libraries (<code>stdio_uart</code> uses <code>periph_uart</code>, while <code>stdio_rtt</code> uses <code>xtimer</code> and with this <code>periph_timer</code>). So this is not something we can easily generalize.</li>
<li>(b) depending on the used platform, there are potential some prerequisites, that have to be done before stdio can be initialized</li>
<li>(c) ?</li>
</ul>
<p>(b) is easy to solve by moving the init code into the platform specific init before <code>periph_init()</code>.<br>
For (a) it is not quite as trivial -> using <code>stdio_uart</code> one can use DEBUG in the timer driver, if using <code>stdio_rtt</code> one can clearly not. Calling it from <code>periph_init</code> does also not really solve this, right?!</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/pull/10806#issuecomment-476818068">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AEn7YKr4qKMqbt97NNov5WAdIdUJmBygks5vanjvgaJpZM4aGOm5">mute the thread</a>.<img src="https://github.com/notifications/beacon/AEn7YNcV_YrDSBanAzOAbGLf45P3iRvEks5vanjvgaJpZM4aGOm5.gif" height="1" width="1" alt="" /></p>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/RIOT-OS/RIOT","title":"RIOT-OS/RIOT","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/RIOT-OS/RIOT"}},"updates":{"snippets":[{"icon":"PERSON","message":"@haukepetersen in #10806: I'd like to take a step back and focus on the core problem at hand: a clear definition of the point in time in the boot sequence, from which it is safe to use STDIO. We all agree, that this should as soon as possible, to allow for using STDIO early on during boot. If this is 'standardized', IMO there is no need for additional checking code if STDIO is available or not.\r\n\r\nSo what are the challenges:\r\n- (a) different `stdio` implementations have diverging dependencies on `periph` and other libraries (`stdio_uart` uses `periph_uart`, while `stdio_rtt` uses `xtimer` and with this `periph_timer`). So this is not something we can easily generalize.\r\n- (b) depending on the used platform, there are potential some prerequisites, that have to be done before stdio can be initialized\r\n- (c) ?\r\n\r\n(b) is easy to solve by moving the init code into the platform specific init before `periph_init()`. \r\nFor (a) it is not quite as trivial -\u003e using `stdio_uart` one can use DEBUG in the timer driver, if using `stdio_rtt` one can clearly not. Calling it from `periph_init` does also not really solve this, right?!\r\n\r\n\r\n\r\n\r\n\r\n"}],"action":{"name":"View Pull Request","url":"https://github.com/RIOT-OS/RIOT/pull/10806#issuecomment-476818068"}}}</script>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/pull/10806#issuecomment-476818068",
"url": "https://github.com/RIOT-OS/RIOT/pull/10806#issuecomment-476818068",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>