Thank you. Welcome, everybody, to the first talk this morning. It's a great pleasure to introduce Arun Thomas, who is going to talk about arm kernel internals. Thanks. OK, so I'm Arun Thomas, and I'm going to talk about BSD arm kernel internals. This is my second talk at a EuroBSD con. I gave a talk at a EuroBSD con 2011 when I was in Holland, and it was a great time. The EuroBSD con events are always a lot of fun, a lot of interesting talks, and interesting people. So let's get started. So we're going to start off with a little bit of a quick demo. Yep, cool. So what you're seeing now is a free BSD booting on arm, specifically the Beaglebone Black. So there are a couple versions of the bootloader that ran, and now the free BSD U-bootloader is running. I have some screenshots, so a lot of stuff flew by. We'll have some screenshots where we can actually kind of look at what's going on. So the U-bootloader is going to load the kernel shortly. And here we go. OK, so now the kernel is running, and we're doing a bunch of device initialization. And so what I'm going to do throughout the talk is kind of go through the process of how free BSD boots on arm. And we'll focus on the machine-dependent parts, kind of the early kernel initialization. I won't talk at all about the machine-independent initialization. There are a lot of other good resources out there for that. OK, so now we're in user land. And then we're going to run a bunch of the knit scripts and eventually get to a prompt. So as I said, this is a Beaglebone Black. It's a pretty convenient platform. It's pretty cheap. It's pretty powerful. It's supported by all the BSDs except Dragonfly, which doesn't have an arm port yet, as far as I know. And it's going to keep booting. We're almost there. So I have it hooked up via serial cable now, so we can see all this stuff. So now I can boot. I can log in. So log in as root. No password. It's very secure. So that's the message. And then if I run uname-m, running arm, which is what you'd expect. So let's go back to the output. So as I said, there's a couple versions of U-boot-boot. All right, cool. Good. That was good. All right. So there's a couple versions of U-boot that run. So there's SPL. And then there's the real U-boot that runs. Then there's the U-boot loader. It'll load the kernel. And it uses something called a DTB, which we'll talk about, Device Tree Blob. And then you get to the copyright notice. So the kernel's booted. Before this happens, there's a lot of machine-dependent initialization that needs to happen that's arm-specific. And so we'll go through what the code that is used to achieve this looks like. So if you look at the logs a little more carefully, so it's FreeBSD11 current. And it's got a weird revision because they use git. I use crochet to build the image. And we'll talk about what crochet is. I use the standard Beaglebone config. And it's built on arm. It's arm. So FreeBSD is kind of interesting in that it builds a system with Clang even on arm. And so here's a CPU that Beaglebone Black has. It's Cortex-A. And I'll talk about the different CPUs that ARM has. So the little thing about the CPU features has thumb-to support. And it talks a little bit more about the output has more about the cache hierarchy and stuff like that. Down here, you see something about the Texas Instruments AM-3358. And that's the SOC that is in the Beaglebone Black. And we'll talk about SOC's system on chips. A little bit more about device tree. We'll talk about what that is. Down here, the last line, you see the mapping for the serial. This is basically how the serial gets configured. So it's a 16-5-50. It's mapped at this address, 4-4-E-09-0-0-0. And it's at IRQ-72. And so we'll talk about how this information actually gets to the kernel. So my goal with this talk is to get you all hacking BST on ARM. How many of you have done little or no hacking on BST ARM? Anybody? Excellent. So this talk is designed for all of you. So my goal is to get you all hacking, or at least interested in hacking BST and ARM. So the talk is three parts. So I'll start off with a little ARM 101. So a little bit about the instructions that architecture, some of the hardware that's out there, some of the SOCs that are out there, to go to find the kind of useful ARM documentation. Then after that, we'll look at some kernel code from FreeBSD and NetBSD. We'll focus on the machine-dependent kind of early kernel initialization code. And then there's a short section on BST ARM tips and resources, so kind of how to set up your development environment, where the good debug tools are, and other good resources so you can continue your ARM study. So I gave a version of this talk at a BST can a few months ago. And so I can honestly say that a patch, someone actually submitted a patch because of this talk. So one of the FreeBSD committers noticed a typo in my slides. And it was actually a typo in one of the FreeBSD source files in LOCore.S. So they fixed the typo an hour after my talk. They made a commit for that. So that was actually kind of cool. So I'm hoping all of you will also make some patches against BST ARM. OK, so let's get into ARM. So ARM is, as you know, hugely popular in embedded systems.  It's moving into general-purpose computing, so your laptops, desktops, netbooks. So the Samsung Chromebooks have ARM chips in them. It's also moving in a server platform. So AMD is making ARM servers now, which is kind of cool and kind of crazy. It's also moving to high-performance computing. So NVIDIA has some pretty cool GPGPU platforms. There's just Jetson board. And I saw some posts on the FreeBSD mailing list that people are actually working on porting a FreeBSD to that, so that's actually pretty cool. ARM has an interesting business model. It doesn't manufacture chips. It basically licenses their architecture and their processor designs to other vendors like TI and Samsung. So it'll take the core, add some extra logic, and then they'll fabricate and sell that. So it's kind of an interesting business model. Okay, so let's get into the ARM architecture. So ARM stands for Advanced Risk Machine. Formally, it was an acorn risk machine. So a risk machine is a reduced instruction set computer. So it has simpler instructions, simpler addressing modes. It's a load store architecture. So if you want to operate on memory, you need to load memory, your memory, the word for memory into register, operate it on there and store it back out. There's no memory-to-memory instructions like in X86. It's big Indian or little Indian. Little Indian is far more common, especially in BSD. There've been several versions of the ISA over the years. So there's been the current ones are ARM V7 and ARM V8. So ARM V7 is a 32-bit ISA, and ARM V8 is a 64-bit ISA. The ARM V8 architecture is actually pretty cool. ARM cleaned up a lot of things in the architecture, but I won't talk about it all here. We'll stick to ARM V7. ARM also has several architecture profiles. There's the application profile, the real-time profile, and the microcontroller profile. We'll only talk about the application profile. The real-time and microcontroller profiles are for embedded systems that don't support virtual memory. So as I said, we'll focus on ARM V7A, so the 32-bit architecture. So if you're looking at CPU models, these are the Cortex-A CPUs, so Cortex-A5 to A15. And we'll get into the different CPUs that are out there. So these are CPUs with full MMU support, and they're designed for what ARM calls full feature operating systems, so things like FreeBSD, NetBSD, iOS, that kind of thing. So ARM V7A actually has two instruction sets. There's the ARM instruction set and the thumb instruction set. So the ARM instruction set is 32-bit. It was the original instruction set. And then later, the ARM introduced the thumb instruction set, which is a mix of 16-bit and 32-bit instructions. Originally, it was 16-bit, but with the introduction of thumb 2, they also added 32-bit instructions. And the reason why they added the thumb instruction set is for code density, so they want to code, if better code density is good for your caches, so that's the main reason, and which is good for performance. Okay, this is a term that you'll see a lot, system on chip SOC, especially in the ARM world. So what's an SOC?  So typically on these SOCs, the ARM CPU is just a small piece of the full system. So here's some examples of things that you'll find in your SOC. So you've got interrupt controllers, timers, UARTs, SDMMC controllers, SATA controllers, USB controllers, GPUs, all kinds of peripherals.  So here's an example of an SOC. This is the AM335X that's in the Beaglebone black over there. And as you'll see, the core is actually a fairly small portion of it. So that's the Cortex-A8. That's what's in the Beaglebone black. So if you look at it, there's a lot of other logic. So you've got a GPU in there.  You've got UARTs. So you've got SPI-IC, timers, watch our timer, real time clock, JTAG, ADCs. You got your MMCSD, GPIOs, USB, Ethernet Mac, memory controllers. So there's a lot of other stuff that goes into an SOC than just the ARM core. So this is the board that I've been using for the demo. It's a popular hobbyist board. It's called the Beaglebone black. It's 55 US. It used to be 45 US. When they released the RevC version, which is the current version, they increased the price by 10 bucks because they increased the onboard flash from I think two gigs to four gigs. I think in Europe, you can get it for around like 53 euros from one of the European distributors. So it's supported by FreeBSD, NetBSD, and OpenBSD. If Dragonfly had an ARM port, I'm pretty sure it would support this board as well. It's a pretty nice platform. It's pretty powerful. It's pretty compact. You can only get it powered from USB. So that's actually kind of cool. And it was kind of nice because when you're packing for a transatlantic trip, it doesn't take up a lot of room. So it's kind of cool.  So if you grab one of these boards, you can run BSD on them. So I'll start off with the Texas Instruments family of SOCs. That's, they're really popular. They're in a lot of really popular boards. So the TI, OMAP3, and DaVinci are found in the Beagleboard and the Beagleboard XM. The Sitara SOCs are found in the Beaglebone White and the Beaglebone Black. And the OMAP4 is found in the Pandaboard and the Pandaboard ES. So another popular set of SOCs is from Allwinner. The Allwinner A10 and A20. These are found in the QB truck, the QB board and the QB truck, respectively. The FreeSkill IMX6 is found in the WAN board. It's also found in the Novena laptop. It's an open source laptop from Bunny Hwang and company that's getting released soon. It was like a Kickstarter campaign. So that's actually kind of cool. The Samsung Exynos 5 is a really high-end SOC. You'll find this in the Chromebook and the Arndale board. The Xilinx Zinc is actually a pretty interesting platform.  And you can find that on the Z board and the MicroZ. So I get a couple of the Z boards in at work, and it's a pretty cool platform if you're doing any hard bruison. So here's a list of the various Cortex CPUs that are out there, the A15 through the A17. So at the low end, you've got the Cortex A5. You'll find that in the FreeSkill Viber. For your really kind of embedded stuff. At the low end, you've got the Cortex A8. So the TI OMAP3 DaVinci Sitara. So those are the ones that you find in the Beaglebone and the Beagleboard. The AllWheeler A10 also has the Cortex A8 that's found in the QB board. The Cortex A9 is the mid-range CPUs. So that'll be found in your OMAP4, which is the Panda board, the FreeSkill IMX6, which is the One board and the Zinc board. So the A8 and the A9 are basically what you'll see in a lot of these hobbyist boards, the majority of them. The Cortex A15 is the kind of the high end of the ARM CPU models. So it's found at the Samsung Exynos 5, which you'll find a lot of your high end smartphones, as well as the Chromebook and the Arndell board. The Cortex A7 is one of the newer CPUs. It's a replacement for the faster A8. It's a faster A8, so it's going for the lower end. And you'll find this in the Exynos 5. So the Exynos 5 is kind of interesting because it has the Cortex A15 and A7 in what they call a big little configuration. So that's kind of interesting. The A8 is also found in the all-winner A20, which is in the QB truck. The A12 and the A17 are newer processors. They're supposed to kind of fill in the mid-range niche. So they're A9 replacements. I don't know. I haven't seen any SOCs that they're in yet, but I'm pretty sure they'll be in a bunch of boards pretty soon. OK, so we talked about a bunch of the hardware that's out there. Let's talk about the software now. So we'll talk about ABI's. So what's an ABI? An ABI is an application binary interface. So if you read the ARM docs, it says that there are rules that an ARM executable must adhere to. So these are things like executable formats, calling conventions, alignments, what do system calls look like? So ARM has several ABI's. There is the ARM-embedded ABI and the ARM-embedded ABI with hardware floating point. ARM-E-ABI and E-ABI-HF. And these are the kind of two current ABI's. There's an older version. There's an older ABI, ARM-O-ABI. I don't actually know what the O stands for. It might be original or old or obsolete. I don't know. But it's not really used as much now. So NetBSD and FreeBSD both support E-ABI and E-ABI-HF. And depending on which ABI you want to use, you'll build your tool chain for that ABI. OK, so let's look at the instructions set a little bit more. ARM has 16 general purpose registers, R0 through R15. Some of them have designated uses. So R11 is the frame pointer. R13 is the stack pointer. R14 is the link register. So the link register, when you do a call instruction on ARM, it'll save your current PC. So you have something to return back to. So that's what the link register is used for. R15 is used as the program counter, the PC. ARM also has some program status registers. And it also has a floating point. They're called VFP registers in ARM and a SIMD registers that are called NEON. OK, so I won't talk at all about the VFP and the NEON stuff. But if you're doing numerical code and vector code, you should look into that stuff more. So there are two program status registers. The current program status register, the CPSR, and the saved program status register, SPSR. And the SPSR is used for exceptions. And so it holds some important bits for the system stacker. So it has the processor mode, for instance, SVC mode. The interrupt mask bits, like IRQ mode, if you want to disable interrupts, basically, you'll set this bit in this register. So if you'll set IRQ bit to disable interrupts. It also tracks the state, so whether in ARM state or thumb state, as well as the andiness as a processor operating in big Indian or a little Indian mode, as well as your standard condition flags, negative 0, carry overflow. OK, since we'll be doing some kernel hacking, it's good to have an idea of what the assembly syntax looks like. You'll at least be reading some assembly when you're doing kernel hacking, probably, if you're looking at some odd jump and stuff like that. So here's a fairly simple program. It just adds the numbers 1 and 2 together. So what this does, it'll load the immediate value 1 into register R1, and then load the immediate value 2 into register R2. And then it'll add R1 and R2 and put that into register R3. So the destination's on the left side. So assuming the process is implemented correctly, you don't get any weird cosmic bit flips. You should have 3 in R3. As I said, we've got to arm the load store architecture. So if you want to load, you have to load and store memory. So here are examples of the load and store instruction, so LDR. So this will load the value that R1 points to into R0, and then this will store the value that R0 has into the memory pointed to the pointer, whatever R1 points to. You can also push and pop things to the stack. So this is how you push multiple values onto the stack. So this will push R0 through R2 onto the stack. And then you pop those values into R0 through R2. These are actually aliases. For ARM, it has these load multiple and store multiple instructions. So you can load multiple words and store multiple words to and from memory. ARM also has control flow instructions, as you might expect. So this is how you do a branch. So branch of 0, BZ loop. The call instruction uses the branch and link instruction BL. So this will jump to funk and then save the current PC to the link register. And if you want to return, use the branch exchange instruction, so BXLR. So this will jump to the link register. You save PC. And in older versions of the ISA, you would just do this. You just directly move the link register into the PC. That's deprecated in ARM v7. OK, so now we went through some of the usual level stuff. Let's look at the OS relevant stuff, because that's what we're doing. We're trying to get an OS running on ARM. So ARM has several privileged levels. We'll only talk about two of them in this talk. So PL0 is used for unprivileged user code. PL1 is used for privileged kernel code. And ARM also has several operating modes. This stuff's a little bit complicated, but it's good to know if you're doing exception handling when you're doing exception handling. So there's one unprivileged mode, as I said, that runs at PL0. But then there are eight privileged modes that run at PL1 and above. So Supervisor and IRQ are some examples of those privileged modes. And the privileged modes are used primarily for interrupt and exception handling. So here are all the modes that the processor can be in. So Supervisor mode is used for system calls. So ARM has an instruction, SVC, or Supervisor call, and that's how you trap into the kernel. In earlier versions of the ISA, this is called SWI, or software interrupt. This is actually what you'll see in the BSD code. It's also the initial mode that the processor starts up in. There's also interrupt mode, which is used for normal interrupts. Fast interrupt mode is used for higher priority interrupts. Also, the processing of the interrupts is a bit faster, as you might expect from the name. Abort mode is used for memory faults. And undefined mode is used for illegal instructions, or also to emulate instructions. System mode is a privileged mode that allows you to access user mode registers. It's not really used much. Hypervisor mode is used for virtual machine monitor support. And monitor mode is used for ARM's trust zone stuff. The most important modes, the ones you'll see when we look at the code examples, are Supervisor mode, interrupt mode, abort mode, and undefined mode. And we'll see those when we look at some of the BSD code. So ARM has an interesting feature that I'm just going to mention. I don't really have the time to go into it, but the feature is called Banked Registers. So most registers are shared amongst the various modes. So you have one PC in all of those modes that I mentioned earlier. But Banked Registers are dedicated registers for each mode. So they're actually duplicated. So ARM allows you to have separate stacks for each mode. So you have separate stack pointer registers. So there's a stack pointer register for user mode and a stack pointer register for Supervisor mode. So I don't really talk about this. I just want you guys to know that it exists. And it's important for exception handling. If you want to know more, some of the ARM docs will tell you all the details. So let's briefly go over ARM virtual memory. So on ARM V7, you're looking at a 32-bit address. If you're not using LPAE, which is the large physical address extensions, with LPAE, you're looking at a 40-bit address. But we're just going to focus on the stock ARM V7 virtual memory architecture. So with a 32-bit address, you're looking at a 4-gigabyte virtual address space. ARM has paging support. There's two levels of page tables. ARM calls them translation tables in the documents. And there's a hardware-managed TLB. So the MMU does the page table walk-in and TLB miss. The commonly used page sizes are 4 kilobyte small pages and 1 megabyte sections. So one important part of the architecture is a coprocessor 15, which is the system control coprocessor. It's heavily used for systems programming. So if you're doing in kernel hacking, it's good to know that it exists. I call it the kernel hacker's best friend. So this is used to set up the processes page table. So this is the instruction that you used to do it. So this will write to the translation table base register. So basically, you'll look into the docs to figure out how to do this. But the instruction is MCR. Move to coprocessor from register. And these numbers, basically, you'll find in the docs, basically. But this is how you install the page table. Another thing that the coprocessor 15 holds is the system control register. And that's pretty important because this is how you enable the MMU. And it's also how you enable branch prediction and caching. It's also how you tell the processor where the exception vector table is going to be. And you use that with these instructions. Again, you'll basically just look at the ARM docs. If you don't read from it, it's moved to register from coprocessor. And then to write, it's moved to coprocessor from register. Basically, you look at the docs to figure out what numbers. But these are the numbers that you need for the coprocessor stuff. OK, so that's kind of like a quick introduction to the ARM architecture. If you want all the details, these are the guides that you should be looking at. So this is a quote or a snippet from the NetBSD source code, CPUfunk.c. And I'll read it out. And thus, spake the ARM ARM. So what's the ARM ARM? The ARM ARM is the ARM architecture reference manual. It basically has all the details that you could possibly want to know about ARM. It's about 2,000 pages. So you're probably not going to read it cover to cover, but it's a great reference. So for our purposes, we'll want the V7a and V7r version of the manual. So they constantly updated it with CPU or Rata. So there was a 2014 version. So that's the one you should grab. The Cortex-A series programmers guide is also great. It's a much lighter, quicker introduction to ARM. So I would definitely grab that if you're new to ARM. So ARM released this originally in 2012, and they've been continuously updating it. So it's now in version 4. So that one just came out this year. So these are both free. You can grab the PDFs on the website. And you have to register for a website on ARM, but the documents are free. So you should definitely grab these right after the talk or even now. The other guide that's good is the ARM system developers guide. It's a decade old. It was published in 2004. So ARM's moved a lot, come a long way in the last decade. So some of the stuff's dated, but in terms of the system level aspects, especially like exception handling, all that stuff, this is a really great resource even still. OK, so in addition to those manuals, you'll want to get some manuals for your specific board. So in this case, for the big one, black. You get a Cortex-A8. So you want to grab the manual for the Cortex-A8, the technical reference manual. You want to grab the AM335x technical reference manual, because that's the SoC that's on this board. And then you want to grab the Beaglebone system reference manual as well. So the SoC's TRM has a lot of useful information, like the memory map. So if you want to write to the serial port, UART0 is mapped to this address. We saw this earlier. 4409000. So if you just write to this address, that's where the transmit register is. So you can get output to serial that way. The interrupt controller is mapped to this address. The DM timer 1, which uses the clock, is at this address. And the DRAM is mapped to this address. So the TRM has a lot of useful information, the SoC TRM. ARM also has a lot of useful migration guides. So if you're coming from MIPS, PowerX86, these are good. They're kind of a quick start guide. So the IA32 guide has useful information, like on ARM characters are unsigned by default. And so that can cause problems. So you should definitely grab these if you're coming from one of these other architectures. OK, so now that we kind of went into the basics of the ARM architecture, and I showed you guys where to get more documentation, we can start digging into the code. So the vast majority of your OS code is going to be machine independent. So it's going to be the same across all the architectures.  So that depends. That's like ARM specific code. And this is usually a mix of C and some assembly and inline assembly. So we're going to look at some examples from FreeBSD and NetBSD and kind of go through the machine dependent initialization of the kernel. So FreeBSD and NetBSD both have really great ARM support. And there are some notable differences. So NetBSD's build.sh, which is what you use to build the system, allows for cross OS building. So you can build on Linux or Mac or whatever. So that's actually kind of cool. FreeBSD uses Clang to build the system. So that's actually kind of interesting, even on ARM. So FreeBSD uses device tree for hardware configuration while NetBSD uses the auto comp framework. FreeBSD has an extra bootloader stage called Ubootloader. And we'll look at that when we get into booting. So here are the pads that you want to know when you start digging into the code for NetBSD. So all of the ARM specific code is under sysarc ARM. So the headers are under include and include ARM32. And the .c files are under ARM, ARM32, and Cortex. So these are the pads for the core ARM architecture support. Then if you want to look at the SOC and BeagleBone specific code, you'll look under OMAP and EVB ARM. So EVB ARM stands for Evaluation Board ARM. And that's where all the platform specific code goes. So include has the header files. And then Beagle has your source files. Then the configuration files. So if you want to figure out which files get built when you add for the core ARM support, you'll look in this files.arm file. And standard.arm has, or std.arm has the various build options that's used to build ARM. You'll also want to look at files.cortex. For the BeagleBone and the AM335X stuff, you'll look at the OMAP2 file, the EVB ARM file, and the Beagle file. And this file, the BeagleBone, this is the top level BeagleBone kernel config. So for previous D, here are the key directories for the core ARM support. There's fewer directories. So all the architecture specific code goes under sysarm. So include has your include files, as you might expect. And ARM has all the .c files. And then for your SOC and for the BeagleBone, you can find that stuff under TI. So that's the directory that has all the shared code for all the TI SOCs. And then the AM335X has the code for the BeagleBone specific stuff. Then you look at files.arm to figure out which files get built, basically. And then there are corresponding files for the SOC and for the BeagleBone. So you look at the TI1, the AM335X files. The BeagleBone file and the top level kernel config can be found here. So if you want to modify via the kernel config, you'll copy that, and then you can tweak it there. OK. So let's talk a little bit about booting on ARM. So we'll talk a little bit about how the BeagleBone boots. So the bootloader has a few main responsibilities. So it'll do your basic hardware initialization. So it'll initialize DRAM and serial. It'll pass some boot parameters, some information of the kernel, and then it'll load the kernel. So those are the main responsibilities. So when you boot up, there's several bootloaders that run. The first thing it runs is the reset handler in the SOC ROM. Then the first stage bootloader will run. So SPL or NLO in the BeagleBone Black. And there's a stripped down version of Uboot, and that's needed since your DRAM is not initialized yet. And so here's some output from SPL. Then after that, your second stage bootloader runs. You can run a full version of Uboot. And this will read the configuration un.txt. So you can see that here. And if you want to tweak the booting stuff, this is the file that you'll modify. So if you want to set up net booting, you'll modify this file. And then it reads your DTP file, and I'm going to talk about the device tree blob shortly. And then it'll start the Uboot loader. So this is an extra bootloader stage that only occurs on FreeBSD, and netBSD doesn't have it. It's an implementation of the standard loader that's on the other FreeBSD platforms. And you can find those sources here if you're interested. And here's the output from the FreeBSD Uboot loader. You can tell that it's going to boot the kernel, and it's going to use the DTP provided. So device tree. What's device tree? So device tree is used to capture hardware configuration. And it's used by FreeBSD on several platforms. I think it originally comes from PowerPC, but it's used on MIPS and ARM and PowerPC as well. So you can find the source files for the device tree blobs in this directory, DTS ARM. And for the Beagleblown Black, you'll look at the Beagleblown Black DTS. Most of the logics actually in this included file, the AM335X DTSI, that's the SOC's DTS file. So here's a snippet from that file. So the SOC is the AM335X. And so this is UART 0. And so it tells you what kind of SOC it is. It's an NS16550. It tells you the mapping. There's that 448909000 address. It's mapped for 0x1000, so 4k. And the register shift is 2, so it's going to do four byte accesses. And it uses interrupt 72. So that DTS file gets turned into a device tree blob of the device tree compiler. So this BeagleblownBlack.DTS becomes the BeagleblownBlack.DTB that we saw getting loaded earlier. So the device tree blob is stored in a compressed format called a flatten device tree. It can either be compiled in the kernel or loaded separately. So in our case, it was being loaded separately. The kernel parses the DTP to learn the board's hardware configuration. And if you want to know the details of how that stuff works, if you look at lib FTT, it has all the FTT parsing code. OK, so NetBST does not use device tree. It uses autoconf instead. That's the device auto configuration framework. So the hardware config info is generated by the kernel configuration process. So when you run config, basically. So here's a snippet from the top level BeagleblownConfig file in NetBST. And you can tell that it has basically the same information. So it has the same address, 440900. And it's mapped for 4k. It's using interrupt 72. And it's accessing things at four byte boundaries. OK, so now that we talked a little bit about booting, let's go through the kernel initialization process. So the first thing that happens is sort of early kernel initialization. So the first thing the kernel will do is save off the boot parameters. It'll set the initial page table and then enable the MMU. It'll set up the exception vector table, the exception handlers, and the exception stacks. And then it'll do some device initialization. So it'll initialize the serial, the interrupt controller, the timers for the clock tick. Then we'll get into the machine independent initialization that's common across all of the architectures. So this will initialize your kernel subsystems. It'll do some more device initialization. Then you'll enable interrupts. And then I'll switch to user mode and run in it, which is the first user code. So I won't talk about this stuff at all. There's a good talk at a HBSD con that will go over these details. Or you could also read the new edition of Kurt's book, the booting chapter has a bunch of useful stuff in there that's been updated. So here are the first steps for a HBSD on ARM. So if you look at a LOCore.S, the entry point is start. So these are the very first instructions that execute. So HBSD uses a Linux boot ABI since it's using Uboot. So R0 will have register 0 in it. Or register 0 will have value 0 in it. R1 will have the machine type. And R2, in this case, will have a pointer to the DTB image. And if you read this comment, so all this stuff actually gets passed to in it ARM in the struct ARM boot params structure. So these instructions down here is basically just saving off these registers that Uboot gives you. So the information that Uboot gives you. Then the next thing the freebies does is it tries to make sure that interrupts are disabled. So Uboot will do this for you, but the kernel programmers are kind of paranoid. So they want to make sure that interrupts are disabled because you're not ready to handle interrupts. Yeah, because you haven't set up any of the exception handlers or the interrupt handlers. So this is the code to do that. Basically all it does is, earlier I mentioned the current program status register has an interrupt disabled bit. So basically it's just going to read the current program status register, or in the i bit and the f bit to disable interrupts and fast interrupts. And then it uses MSR, move to status from register, to write that value. So that freebiesd, the start routine is actually common across all of the SOCs. Nepesd has actually different start routines for each board. So the beaglestart.s file has the entry point for the Beagle board, which is a Beagle start. So it's pretty similar. What you'll see is that it will try to switch to SVC mode and disable interrupts. And that's what the CPS ID instruction does. This isn't actually necessary, but it's good to do just in case. And then it does the same thing, basically, as freebiesd. It basically saves off the arguments that the bootloader gave us into this location, uboot args. So we'll continue on with the Nepesd initialization. So the Beagle start will create an initial page table. It calls armboot l1ptnit to do the work. So this page table is an l1 page table with 1 megabyte sections. So it has mappings for the kernel. It's just an identity mapping. So virtual address equals physical address. And it has a mapping for serial. So we can get debug output out to the serial. After that, Beagle start will run. And Beagle start will continue to run. And it needs to enable the MMU. And it calls armcpunit to do the work. So if you read this comment, it says turn on the MMU and caches. So it passes in that temporary l1 page table that we mentioned earlier to armcpunit. So armcpunit, it's a little bit misleading. It's in this function that has an a9 file. But it also applies to the Cortex-a8 as well, which is the process around the Beagle bone. So the first thing this does, it'll invalidate your caches and your TLBs. Then it'll enable the caches. And it'll set the ttbr, which is the translation table base register. That's how you install the page table. And then you'll enable the MMU. So the rest of the machine-dependent initialization is handled by start. This is a common routine across all of the SOCs. You can find it in locore.s. And this is basically the jump to that common start routine. So start, basically what it does is it'll set up the environment for ccode. So you can do the rest of the initialization and c, which is a lot more convenient than writing everything in assembly. So the first c function that'll run is init-arm, which is a helper function init-arm common. And that'll do the rest of the machine-dependent initialization for you. So there's a lot of stuff that happens in there. After that's done, then you can call main, which is the first machine-independent code. On FreeBSD, this main is called MI startup for machine-independent startup. But the flow is pretty similar between FreeBSD and FBSD. So init-arm, as I mentioned, init-arm is a SOC specific. So there's one for the Beaglebone. And then init-arm common is the arm-chanaric one that's shared across all the SOCs. So these two functions perform, these two functions together do the following things. So it'll map the devices, and it'll initialize the console. It sets up the real page table. So we had kind of a dummy page table initially. This will set up the real page table and switch to it. It'll set up the exception vectors and stacks, and it'll parse the boot arguments. Afterwards, init-arm and main can run. So we'll briefly talk about exception handling for the kernel hacker. So the things that you'll have to do, you'll have to set up the vector table, the exception stack pointers, and you'll have to write handlers for each exception. So the exceptions are briefly reset, undefined instruction, supervisor call, use for system calls, prefetch the board and data report, these are used for memory faults and instruction and data, respectively. Interrupts, fast interrupts, and hypervisor calls. So the exception vector table is a jump table with eight entries, one for each exception type. So each entry holds one ARM instruction. So you can either make it a branch to an exception handler or a PC load of an exception handler. That's what this looks like. They're basically equivalent. So this is what FreeBSD's exception vector table looks like. You can find it in exception.s. So here's the entry for the system call. So you do SWI entry. So you also have to tell the process to where the vector table is found. So there's a few options. The low vector location is zero. The high vector's location is here. And depending on, you'll use the system control registers V-bit to determine this. Another option is to use the vector-based address register that allows you to put the vector table in an arbitrary address. So here's FreeBSD's exception setup code. It's an in-it ARM. So it'll allocate stacks for each of the modes that we saw earlier, so IRQ, abort, undefined. And this is the kernel stack that's used for SPC mode. Then this function will go in and modify all these banked registers that I talked about for the stack pointer. And FreeBSD uses the vector's high location, so the 0xFF address. OK, so we'll briefly go over developing BST on ARM. So BST has really great cross-compilation support. You can cross-build the entire system. So it'll build U-boot, the kernel, the tool chain, libraries, user land, and all that stuff. Then you can also create a bootable SD images really easily, just with one command. So on FreeBSD, you'll use crochet for that. On NetBC, you'll use build.sh. So this is actually pretty convenient. If you're doing a lot of development, you'll probably want to set up Netbooting. So you can TFTP boot the kernel in NFS-Mount-the-root file system. This will really shorten your development cycle. And if you don't feel like making your own image, you can grab one from the NetBSD and FreeBSD websites. So debugging BST in ARM, a lot of stuff you'll be doing is printf debugging. U-boot sets up the serial for you. And if you want early debug output, you can set verbose init ARM on NetBSD or turn debug on in FreeBSD, on NetBSD and FreeBSD, respectively. JTAG debuggers are handy. Some are relatively inexpensive. The fly swatter is one. And it supports the people on black if you solder a header on there. Kernel debuggers are useful. QB is also really useful. So you can hack an ARM without actually having any hardware. There's a lot of useful talks. I won't actually go into all of them, but in the interest of time. So the FreeBSD on people on black is a really good talk. It was in the first edition of the FreeBSD Journal. You should definitely check that out. And then this talk, How for FreeBSD Boots, the software core MIPS perspective is really good. It goes into all of the initialization, including machine-dependent stuff. This NetBSD talk is good for learning about modern SOCs. And then this stuff's good for learning about booting. And this guide, the reporting NetBSD guide, is a guide on the NetBSD website. It's a little dated, but it's probably the most complete information on how to get an SOC up. OK, so in summary, we discussed the basics of the ARM architecture with the instructions that looks like, where to go to get more documentation. We looked at some of the machine-dependent BSD code. We're looking at FreeBSD and NetBSD. And I showed a few tips on how to do some debugging and set up your development environment on ARM. And then all those talks are really good. Also, the FreeBSD and NetBSD developers have a lot of really good blogs that are really informative. So if you type them a term into Google, probably one of their guides or one of their blog posts will pop up. It's really useful when I was getting up to speed. So I'm hoping I've kind of, so I present a lot of information. And I gave you a lot of resources that you can check out. So I'm hoping that I've given you at least the inclination to maybe grab a BSD and start hacking. So there's a lot of cool hardware out there. So grab a BSD, install it, and then start hacking. There's a lot of things you can do. There's a lot of new hardware coming out. You can port to a new board. You can add drivers. You can fix bugs. You can optimize code. So I'm hoping you'll at least grab one of these boards and do a little bit of hacking or at least think about it. So I'll be around. You can definitely come up and talk to me if you want to talk about ARM. And here's my email address. And I'm happy to take maybe a question. Thanks. Thanks, Arun. Any questions? Hi. You mentioned the device tree support. Is there any chance to have the same device tree definition used by Linux on BSD? So that's kind of a complicated question. I'm probably not capable to answer that. So the problem with the device tree stuff is that it's a GPL, I think. So I talked to Grant, likely, one of the Linux kernel developers a while ago, a long time ago. And he seemed interested maybe switching that stuff over to BSD licensing. So maybe it's possible, but I don't actually know. So someone official from free BSD would probably have to go talk to the Linux guys to see that happen. But that would be great, actually. Because I think there is a problem like naming of the property or something like this. Is it done in a compatible way? Yeah, I don't actually know. So I think some people, I think they may be starting to use some of the Linux device tree. I don't really know, actually. So I think if you ask them free BSD arm, they'll probably know. Ian LaPore probably would be the guy to talk to about that stuff. There's a lot of stuff. OK, thank you. So I don't know enough about that, unfortunately. But it would be great if we could use the same device trees, and it would be great if they were BSD licensed. Thanks. Other questions? I'm pretty much sure they are compatible. OK. We have a lot which we use. Richard, yeah. There's one or two things that. Just a small comment. If you port to your own board, make sure to set the alignment flex very, very early. Otherwise, you can get some interesting surprises from C code. That's a good comment. We've got a question about what you said at the early boot. You say you use the identity mapping for virtual address equal physical address. Is it only for the early stage? Yeah, it's just for the early stage. OK. And then what do you do? You map the current data and the high addresses? OK, like 1 gigabyte, 3 gigabyte separation? Yeah, I forget the exact details. But yeah, something like that. OK, thanks. Other questions? Cool. Thanks a lot. Appreciate it. Thanks a lot. Thank you. Thank you.


Have you ever taken a Myers-Briggs type indicator test or MBTI test? It's that weird four-letter combo that tells you your personality type and different tendencies or interests you may have. Now, mostly everyone thinks they have a winning personality, me included, but we all have a personality trait or two that can be a bit, well, toxic. No one wants to believe a trait of theirs is toxic, but it can be important to know which traits of yours are. So, let's take a look at your most toxic trait based on your MBTI personality type and what you can do to change it. Let's go. ISTP, the Virtuoso. The Virtuoso is someone who is optimistic, creative, yet practical, great at prioritizing, and they're the person you want in a major crisis. Because of their spontaneity, they can get easily bored, not be one to commit to something and engage in risky behavior to spike their interest. This can lead to a lot of unfinished things or even failed relationships and friendships. If this sounds like you, try starting small. Is there a book, a hobby, or even a DIY project that you've been wanting to complete? Schedule an hour every weekend where you'll keep working on that thing, whatever it is, until you finish it. After a few weeks, try two hours or even longer. You can even practice making a small promise to a friend and following through. This can help you practice committing. ISFP, the Adventurer. The adventurer may sound like an Indiana Jones copy, but they're actually the passionate, imaginative, artistic person who adventures in their mind. The problem with this is that an adventurer can be way too independent and become stressed. They can also become easily overwhelmed by their emotions. If this is you, try hanging out with one or two friends at once instead of a group. If you're in a relationship, maybe ask your partner if they can help with the chores around the house or to take charge of dinner one night. If your emotions are your kryptonite, try journaling. If a really strong emotion comes up, grab your phone and type it out. What do you feel, why, and what can you do about it? This can help you feel less overwhelmed. Up next is ESTP, the Entrepreneur. The entrepreneur is a bold, direct, and practical kind of person. They're very perceptive and sociable as well. However, since they're so rooted in their practicality, they can sometimes forget that people have emotions and be a little impatient with others. They can also become so focused on solving the problem at hand that they miss the big picture. Does this sound a bit like you? If so, it's cheesy, but try to put yourself in the other person's shoes. How might the other person feel or what might they think? This can help bring the entrepreneur back to remembering that everyone has feelings. ESTP, the Entertainer. The Entertainer is someone who defies tradition and opts for more original things. They love aesthetics, they love putting on a show, literally or figuratively, and they have excellent people skills. Unlike some of the personalities we've mentioned already, the Entertainer is actually really emotional and can be more sensitive than others to conflict. In a study centered around people pleasing, it was discovered that the main reason for this is self-preservation.  So how do you fix this one? Again, start small. Let's say you and a friend go to Starbucks for a quick pick-me-up. Your friend says, I'm getting an iced coffee. You want the same? The typical Entertainer response would be, sure, sounds good. But not this time. Politely let them know that their option sounds great. But you've got your eye on something else. Start politely bringing up your opinion and conversation to see how it's received. ESTJ, the Executive. The Executive. This person is dedicated with a strong will. They're direct, fantastic with organization, and reliable. Because they're so rigid and logical, this can make them closed off to more alternative or unconventional methods. They can also be somewhat stubborn, which makes them a bit uptight, unable to relax, and even unable to express emotions. For this, it's very important, the Executive remembers that they can have their own methods and beliefs. But that doesn't mean someone else's methods or beliefs aren't valuable or equally correct. Next time someone offers a suggestion on how to do something, instead of immediately rejecting it, try it out. If you don't like it, that's cool. Thank the person for showing you another way of doing something and move on. This can help you open up to new ideas and understand that agreement doesn't have to be present for respect. ISFJ, the Defender. The Defender is another reliable, observant personality. They're supportive, enthusiastic, and aren't afraid to get their hands dirty. Since they're always so eager to help others, sometimes they can put themselves second or third or seventh, never bringing their feelings up. They can also be way too humble, not even taking credit or praise for their own accomplishments.  The important part is making sure you acknowledge that you took part in the thing you're praised for. ISTJ, the Logistician. The Logistician is the leader of the pack. Think of the stereotype of eldest child, responsible, organized, practical, and good at pretty much everything. Because they're another super rigid personality, they can sometimes be too rigid and not want to try new things, meet new people, or really do anything outside of the routine. Expansion can reverse this, but again, the key is maybe steps. Say the Logistician eats the same thing for breakfast 20 years straight. Bowl a cereal and have a grapefruit. Maybe one day they can try some scrambled eggs and toast. If they don't like it, that's okay. There's always tomorrow. Plus your boundaries, little by little. Maybe make it a game. What's something you can change up about your day? Let us know down below. ESFJ, the console. The console is a nice mix of beautiful and practical. Plus, they're loyal, warm, and great with people and social cues. They couldn't have a toxic trait, right? Let's ask the audience. The audience got it right. Yeah, they do. The console can be preoccupied with their social status, and now others perceive them. This can cause them to be overly needy for validation and be overly selfless to be perceived as good. If this sounds like you, try this to help boost your self-confidence. When you wake up, say out loud or write down at least three positive things about yourself or your life and take a moment to appreciate those things. This is called gratitude, which according to some studies on the effects of can lead to stronger senses of community and stronger relationships. ENFP, the campaigner. The campaigner is a perceptive, curious person who is often enthusiastic. They know how to have fun and be in the moment. Because of their happy outlook on life, it can be said that they wear rose-colored glasses, which cause them to make naive decisions. Although with good intentions, campaigners can benefit from weighing pros and cons when in a situation where they want to believe the best in someone. You can write these pros and cons down, type it on a note on your phone, or even just say them out loud. Once you've done so, make a decision based on your list and which decisions are in your best interest instead of based on your emotions. ENFP, the mediator. The mediator is an open-minded, generous, creative, and passionate person. However, these traits can cause them to self-isolate and become far too introverted due to burnout. They're also really critical of themselves, which can make them people pleased for acceptance. This can sometimes be a toxic trait. Coming in hot with another list suggestion, instead of pros and cons, the mediator can make a list of things they truly like or love about themselves to enhance their self-confidence. When it comes to that self-isolation, the mediator should schedule one social event every one to two weeks, depending on your social battery. This can be a FaceTime, phone call, or a good old-fashioned meetup. Of course, be safe out there. This can help to break up the need to withdraw and help keep a good balance. ENFJ, the protagonist. The protagonist is a passionate person with strong opinions, but they're open to other opinions too. They're usually the leader of the group and want to see positive change. Because of that deep-rooted need to correct everything wrong they see, they can become overly idealistic and tad unrealistic. They also come off a bit condescending, especially if they believe they're always right. For the protagonist, remembering to ask little questions to include others can really be a game-changer. Let's say someone asked the protagonist for advice on buying a car.  Another option is explaining your tips and tricks. Then the protagonist can ask, what do you think? It helps remind the protagonist they're not always the main character. INFJ, the advocate. The advocate is always looking outside the box. They're incredibly insightful and not interested in materialistic or superficial things. Because of the advocates want to avoid the mundane, they're always searching for the next big thing. This can cause toxic perfectionism, which can lead to emotional burnout. Self-care and rest are the advocate's friends. The advocate needs to be sure to schedule time for themselves at least once per week. This can be a bath, a journal session, a nap, a massage. Have to play your favorite video game, read whatever fills your cup. It's okay to take time to rest, advocate. This will help you give back as you love so much to do. INTJ, the architect. The architect likes to break things down rationally due to their curious nature and they rarely base things off anything other than facts. Because of this affinity to facts, architects can completely dismiss emotion and be a bit arrogant, thinking they're always right. This can be a bit toxic. If you're an architect and are in a situation where you may not understand someone's emotions or haven't acknowledged them at all, pretend you're a TV therapist and ask the ever-so-popular question, and how does that make you feel? When you ask that open question, it allows the other person to explain their stance for you to factor into your response. INTP, the logician. The logician is just what it sounds like. They're the logical, analytical, curious type, but they're also open-minded to collaborations and others' views. Because the logician is able to analyze multiple options at once, this can also lead to toxic perfectionism and hyper-focusing on how these things can be improved, even when they're not broken. They can also take rejection pretty rough if their idea isn't chosen. How can we detoxify this? The logician can practice gratitude to give thanks for the good things in their life and can help to stop the search to always improve what doesn't need improvement. Try saying thank you for three specific things each day. Just try it and let us know how it feels. What did you say thank you for? ENTJ, the commander. The commander is another classic leader type, a good old Steve Rogers. If you know, you know. And who doesn't know Captain America? The commander is an efficient, confident, strategic, and strong-willed personality who loves good hard work and is often charming. The toxic side of their strong will is being stubborn or even showing dominance over those who oppose them. This can be incredibly toxic and off-putting. As a leader type, it's important to remember all opinions on the team are valuable. To reduce this toxic trait, the commander can practice using checks and balances, whether it's a partner, a friend, a family member, or just someone who you trust. You can always ask them what they think of your idea. This way, you can get the real feedback and adjust as needed. ENTP, the debater. The debater is that person who can create a well-thought-out speech and deliver it while charming a crowd. They love learning new things, and they're especially quick-witted because the debater is, well, a debater. They love challenging ideas. Once in a while, this is a healthy trait, but the debater likes to challenge almost everything. This flows into the toxic category. To reduce this toxic trait, the debater can ask themselves whether their opinion has been asked for. In some situations, especially emotionally charged ones, someone may just want you to listen rather than give advice. If the debater is unsure, they can straight up ask. Would you like my opinion? If the answer is no, the debater should respond along the lines of, okay, I'm here to listen. This can help reduce that toxic trait. There are a lot of different personalities out there, and you might even be a mix of a few of these. Do you know your MBTI personality? If not, jump over to 16personalities.com to take a free MBTI quiz. What personality are you? Do you have any other tips to minimize your toxic trait? Let us know down below. And as always, keep an eye on Psy for more Psych2Go content. If you liked this video, feel free to share with a friend. And if you love psychology, consider subscribing and hitting the notification bell for more psychology content like this. As always, thanks for watching. See you soon.


The Northern Finland Birth Cohort, NFBC, 1966 and 1986 data revealed that men aged 19 to 21 had the highest rate of pneumonia, with a peak of 227 cases per 10,000 individuals. Additionally, men with low educational levels, smokers, those with asthma, cardiovascular disease, kidney disease, rheumatoid arthritis, psoriasis, or type 2 diabetes were more likely to develop pneumonia. Furthermore, men who drank excessively at age 31 were also at higher risk of developing pneumonia later in life. This article was offered by Pia Holmer, Paula Pasonen, Oli Mustonen, and others.


Joining us now, he is the head coach of the Mustangs, Coach Paul Cantabene. He was down on the field. That was actually pretty quick, pretty quick, pretty quick move to get up here by the way, that quickly. He's quicker than that look. All right, Coach, obviously get the win tonight, but let's start with JT, who breaks the goal scored. I feel like we've been talking about it for about the last four weeks. It finally happened and happened in spectacular fashion for what it's worth.  Richie Ford is a special player here. They scored a lot of tremendous goals and it was an outstanding four-time All-American for us. But to beat that record at 181 goals is really something special. I think JT, you know, that's going to be a long time before somebody beats that record. And so that's really something special for him to do that. And I think the whole team wanted him to do that. You know, he's worked really hard and it's not for lack of shots, that's for sure. But he's done a great job and we're really happy for him. Anytime somebody breaks a major record in any kind of sport like that at their school, that's really something really, really special. You know, so we couldn't be more happy for him. And you know, every guy would just give him a huge hand in the locker room and everything. So it's awesome. That's cool. That being said, I'm sure there are things from the night that you're not quite as thrilled about. I would assume transition defense perhaps on that list. We got to get in the hole, you know what I mean? I think we didn't do a good job in our rod at all. We did a good job in the first half. We scored four goals, three were in transition, one was in man up and they gave him a couple in the second half. We got to get in and play six-on-six. We play six-on-six. We're a very good defensive team and we give Mark a chance. When we do some things, and I think our young middies, you know, sometimes get caught in some situations and they don't understand what to do yet and we have to live through that and help them out and to do that. But you know, we also got to do a couple things better through the box and how we saw it. And you know, we got to continue to do better that. But you know, overall, when you went in the playoffs by one or 40, it doesn't matter. You move on and we're happy to do that and we won. And we knew they were going to play us a lot tougher. You know, Horton always plays great against us and he was the big difference. You know, some of those saves were pretty spectacular. We probably could have had seven or eight more without him, somebody else in there. And so I gave him a lot of credit. He played great and kept his team in it all night. Besides getting into the hole in your transition game, is there any area that you really need to improve in before Championship Game Saturday? Well, we got to face off a little bit better. I think Shiloh did a good job, but he's got to pick the ball up. He's good at getting out, but he ran out too well in the ground ball area. He's got to do better there. But I think we got to shoot the ball a little bit better, which we will. But you know, I think I like the way we're playing overall. I think we're playing tough. And so I think we're giving ourselves an opportunity. So whoever we play, I think we'll play really well now in Lycoming, I guess, once. So we'll give them a great go against them on Saturday. And obviously a day that you'd like to have a lot of Mustangs fans out here. Yeah, come on out. Let's go. And a special day, too. Neat. I know that for the women to be playing on Saturday as well here at home, a really neat day for everybody here at Stevens. The only time you're hosting two Championship games on your campus is a special day. Coach Rayler would go at one, I believe, and we'll go at seven and get after it. And hopefully, you can bring two Championships home. But Championship games are tough. You got to go out there and play and execute and anything can happen. And it was good that we got ahead of Widener today, and they made them always chasing us, and they were able to get the lead. And I think that's big against teams like that. We got to do the same thing against Lycoming. Last time, I think we really played well against them. I think we can really hopefully play pretty well and do what we can. We got to face another really good goaltender. All right, Coach, congratulations to you on Saturday. Thanks a lot. JT, get in here, buddy. Let's do it. The record holder, Coach Paul Cantamana, joining us.


Do not touch any of the tiers without washing this seriously a lot of players in tiers of the kingdom have spoiled the entire story from accidentally touching the tier So in this video, I'm going to be showing you a proper order to do this question That way you can follow along with the story a lot better And I will not be showing any cutscenes in this video. So you do not have to worry about me spoiling the story All right, let's get into it So we're starting off this quest by first coming over to this shrine over here That's located by new serene stable. This is going to be located all the way to the west of lookout landing So pretty much right across here is where we're going to start and you're going to already notice these geoglyphs throughout your map Now in order to initially begin this quest, you're going to have to head over to this little stand over here You're going to notice impa and essentially what you want to do is you want to go ahead and take this balloon and put it up here Just like this the next thing you want to do is you want to go ahead and grab that torch So i'm just going to go ahead equip this torch before that talk to impa So i'm not really going to say anything extra about it. Pretty much you fix her balloon She's going to talk about something and you wanted to hop on I'm going to avoid as much dialogue or text as I can so you guys can enjoy it Anyway, let's stick back out and then just you know walk over the fireplace Now you're going to head up in the sky and you're going to get a pretty much good look here any spot that looks like that There's always going to be a tear. Look at how smart they are The tears because this game is called tears of the kingdom and the first thing that you want to do is go ahead and interact with So-called tear now i'm not going to be playing this video So feel free to pause right now if you are at this part of the game and go ahead and watch whatever tear You just got and i'll be right back. Ah the tear comes up and then uh it begins right here Okay, that's it. So you're going to have a little bit of dialogue with impa and afterwards We're going to be heading to another location now the cool part about touching these tears on your map Is that when you do open up your map? There you go the symbol shows up That means you've completed a tear that is our indication for finishing it The next thing we're going to be doing is heading over to this location at the forgotten temple The next part of this quest to progress it is going to involve you going all the way to this location So just follow this road up here and uh, i'll see you when we're at that spot And we're going to tap this shrine here to make it a little bit faster So right from the shrine location, we're just going to head straight And then we're going to approach this little ledge right over here And as you approach this ledge just go ahead and jump down So we arrive here and uh, you're going to notice it's kind of blocked from the top part So you're going to just have to go ahead and just jump a little bit lower to the bottom floor right here Right where the balloon is and that's how you know where the next part of the quest progress go ahead and talk Over to kato and that's going to progress the next part after you talk into kato It's going to say that impa is further in this temple and we're just going to go ahead and go further in Now at this room luckily for us there is a shrine so activate that shrine So you can come back here at any time you need to always make this a habit to touch shrines Wherever you go because they act as fast points and you have to touch them not just see them They have to look blue and orange until you know it's good to go So anytime you want to come back you can come back Anyway, once you're done with that go ahead and talk to impa once you're done talking to impa You're going to continue further and go deeper into this temple and then we're going to enter this insane Room over here and then you're going to go further Even further. I wonder what this does. I always wonder if we could do something here I don't know and then you're going to notice this insane map that is pretty much Every single thing that we're going to be looking for on the map and you can see that Hey, we did that one and those are all the other locations So we're going to just go ahead and drop down here and the next cutscene will play after having dialogue with thumb Now you're going to be seeing all the symbols over here And you probably passed by these symbols during your exploration in the game Now after this dialogue we're then now going to go around the map and activate all these various symbols The best thing you can do is have these sky view towers ready to go because that's what we're going to be using as lift-off points In order to do this if you don't have your sky view towers unlocked I have a complete video showing you how to do that really fast. Anyway, let's keep going with the quest All right, continuing this on we're going to be at the paquita stone grove sky view tower And my favorite part about hunting these is when it's late at night So we can see some glowing stuff on the ground Now we're going to launch off from here and you can notice that one over there. We're not going for that one We're going to go south. So if you have your sky gliding gear, you see that right over there We're going to that location right there on the map Okay, we have landed and i'm going to continue going straight to where this geoglyph is it is it is very cold right now I should be wearing something warm, but I want to stay in my sky gliding gear Let me know is it just me or is it sometimes it just get a little lazy sometimes to change your clothing I don't know happens to me a lot. All right climb this ridge over here And you're going to go for this ledge right about here So this is the first ledge that you'll see and then as you come over here You're going to find this tier right there. It is go ahead feel free to interact with it And this is what's going to happen your second cutscene is going to happen And you're going to go ahead and pause my video and watch it for yourself On your game fantastic. How'd you enjoy that cutscene? Probably really good. Okay, so you've completed two tiers Let's move on to the next one the next location that we're going to be heading to is the Eldin canyon sky view tower This is the one we're heading to next once you get to Eldin view sky view tower go ahead and just launch And we're going to be up in the sky here and you're going to see that nintendo switch I mean, it's the pora pad basically, but it looks like a nintendo switch And you're just going to head right towards that nintendo switch. Uh, I mean the pora pad geoglyph This one's going to be pretty simple to go to and uh, can you spot the tier from here? Can you see the tier right there? There it is. By the way, you should definitely grab your sky gliding gear I have a video for that makes it so much easier to travel. All right, and then the tier is going to unveil right there We're going to click on it. We're going to get that little hand glow and your third Memory slash tier is about to begin So go ahead pause and enjoy this cutscene. Okay, congrats. You've completed the third tier We got a few more to go. So let's keep moving. Okay, the next location. We're going to is the Fahashra sky view tower I'm going to teleport there. This is going to be located right over here on your map So from look at landing just right about there Now the crazy part about this tower real quick is I there's always a bloopy here, which is just tempting to shoot Totally miss. All right, let's launch and we are up in the air And you can see right over there is our next spot We're going to skydiving gliding is just such a nice experience And I do like the fact that we don't really have to fight enemies to really get to these tier I mean as I'm saying that there's like a whole enemy talus right there Let's make our way in here and it's going to be pretty much at the crater of these trees Yeah, it's like right dead center. So there you go. We have arrived at our next tier go ahead activate it pause this and Watch your cutscene. How insane was that cutscene? That was probably one of my favorite ones So far as we're doing this. It's just insane. This story is just great. All right, you've completed your fourth one Now let's head to the fifth one. Okay. We're gonna be heading towards the Gerudo sky view tower All right, when you get here, it's it's it's gonna be it's gonna be a little hot sometimes for some people But we're in the shade This is the location of the tower if you guys would like to see right over here and from lookout landing It's like right here. Just go down this way So Gerudo Canyon sky view tower once you're here get ready to lift off And we are up in the air and you can see right over there is where the tier is pretty much Look at that. So let's identify where the tier is from here and you can see this is the most shaded in part So that's the spot we're gonna go for okay It would be good if you didn't have enough stamina as me that you should probably use stamina elixirs Which is basically like three restless crickets and one bocoblin horn really easy to get in the lookout tower area So you could you could do that Uh if you do run out of stamina and go ahead and then just activate this tier right here Uh link's hand that that light up is so cool. All right cutscenes starting Enjoy it pause the video and then we'll move on to the next one. All right You finish this tier and now it's time to move on to the next one The next one that we're going to be heading to is the Gerudo Highland sky view tower So this one's going to be pretty much just left of this one over here the Gerudo Canyon one So Gerudo Highland sky view tower is pretty much underneath the floor So let's go ahead and lift off on this one now once we are in the air We're going to obviously, you know do a nice 360 circle kind of hand just like that And then we're going to notice something right in front of us actually right there. Whoa. Look at that. Is that is that a geoglyph? Let's fly towards it. So make your way to that thing right there on the red canyon looks phenomenal I am cold man. I got two hearts in a quarter. We're not doing too hot here Will we make it before we ko? I don't know we're getting there. Come on sky dive gear We're almost there. There we go. There's a tier right there. Okay, we've identified the tier You guys are probably faster than me at seeing this tier. Okay, and as we get close I'm going to just parachute because I don't want to I don't want to climb this thing, you know This one's going to be right by a balloon. So that's the landmarker But of course you guys are really good at spotting this tier and saw this from the sky So we're just going to go ahead and activate this one time for the cutscene. That was a very interesting cutscene Let's move on to the next tier. You guys you guys are almost there. Let's keep going So for this one, we're going to be launching from the rubella wetland sky view tower We're going to be heading down pretty much to this spot over here. So let's go launch very cool There's some dragons in the sky very nice and you can see where exactly our target's a giant sword over there Let's let's go to that sword. That's where we're heading to and look we have somehow survived guys one in a quarter heart We're getting through these cutscenes and i'm going to survive All right, so just make your way down there and see if you can quickly identify the tier from here I see something it's right over there. So we're going to go for the hilt of the sword that one's huge That looks like a giant here Maybe get a little higher ground here instead of walking on the floor It gets a little confusing when you start walking at the sword So stick to the high ground pin point that make sure it's marked in your pora pad Just so you know to go to there it looks like one thing from above But when you're walking down below you're going to notice how it gets a little bit more confusing And now you can see the tier right in clear site direct path from where we went We didn't have to even hit the ground to get there pretty good pretty good And we're going to go activate this tier and man, there's a sword here So something's about to go down on this one. All right click on that tier And I hope you all enjoy this cutscene.  All right next we're heading to the pakita Stonegrave skype tower pakita pakita tomato tomata. All right launch from this one This is going to be pretty much by the way all the way at the top left of your map and which tier are we going for here?  Okay, so we're going for this one here So by the way, if you guys are kind of curious where I am it is literally to the top left of the map right over here Oh link, you are not looking good with these hearts. I think it's time. I actually pop food I do not want to die on my tier video. There we go for we're heading towards it Now if you want to identify the tier real quick from here Let's go ahead and uh take a look take a look. Where is this tier located? I see something over here something by the head just kidding. It's not the head It's right there on the left side as we're diving down and it's it's very obvious here And then we're going to activate this cutscene because now you just you just got to know what's happening here, right? Yeah, it's getting very intense. It is getting very intense. Let's head over to the ninth one We got to get to the ninth here. All right We're going to be heading towards the mount linearu sky view tower And you can see this game is literally trying to kill me because they keep placing me in the code as we're going to figure out Our geoglyphs. Anyway, this is located right over here on your map or clarity and we're just going to go ahead and launch Now like I said, I love nighttime because you can spot things a lot easier during this time You can see it's right going to be there towards the north. There's the symbol We're heading towards so it's not too bad And if you need a little more boost and you're running on a stamina or you're not getting enough distance You can use the sky view tower right here or the sky the sky island right there Looks like they had some stuff there. Ah interesting. There we go. It's very bright It's very glowy and we can see that our tier is all the way at that time So continue skydiving or paragliding towards it Mark it if you need to with your poor pad if you cannot make enough distance like me But I just wanted to show the best way to do it is with your gliding gear So it's funny. I waited so long to do these because I forgot about them. This is my second playthrough By the way, kind of crazy. This one is the ninth geoglyph Let's click on it and feel free to go ahead and pause the video as you watch this cutscene All right, number nine is done And you can always open up your map and then tab over to adventure log Which I'm not going to do just in case some of you guys just watching to write this order down Which is going to show you that you're doing the story in the proper order All right, let's head over to number 10 the next tower We're heading to is the Hyrule field sky view tower This is my favorite one because I come to this camp to fight all the enemies Okay, but that's not what we're here for We're here for geoglyphs to launch up out of this tower and as we're up in the sky Always do your little pan around and be like, oh, did you do this symbol? Yep, we did that symbol and that's one right over there kind of glide over towards this spot And I can see already the tier is so obvious at the top of the left hand All right landing on this one over here very nice And then I'm going to just take my little skydive right here and There we go right below me should be the great plateau. Wow. Look at that Oh, you should guys also should check this out on your way there if you do have it to stop by There may be a piece of armor there. Just uh go ahead and stop by that little spot I'm not doing that in this video though because we're focusing on tears. Listen, we have to not get distracted in this game That's the number one problem I have in tears of the kingdom is always getting distracted all the time Okay, so we're heading towards this spot here on this rock and like I said, it's going to be on this little left hand here So okay, I got confused for a second where the left hand was but it's actually at the bottom right here Exactly at these coordinates. There you go in case you wanted to head down here All right, the next tier is right here. Let's go activate it with me Um hit that pause button get ready to get shocked. I guess right? We're number 10. All right, you finish your 10th geoglyph Let's go To the 11th one. All right head over to typhlo ruin sky view tower This is going to be the one just north of the great hyrule force all actually This is all the way to the north. This was one of my most favorite towers to unlock by the way It was it was quite fun All right launch here and as usual always just pan around the map at all times Just so you have a good view of where we're going in this game and it's so funny. It's literally right below us Okay, uh, so you probably wouldn't be able to pan around. It's literally right below us Uh, just head towards that. There is also a shrine right about there So if you want to activate a passport grab that shrine the last sword when we went to wasn't that uh, Wasn't that great? I mean not really good things happened when I see swords in this game All right, go ahead activate this one and this is going to be an important tier. You gotta watch this This is gonna blow your mind. Yeah, if you just watch that one that scene my my my heart hurts All right. Anyway, this is a really cool spot of a dragon here. Wow. That's awesome Anyway, open up your map and it should be on your map for everyone Actually, this is the final spot We're going to and because i'm a professional cheers of the kingdom player I have a shrine right there ready to go So you all are going to make your own way To that spot and that's where the final part of our quest is going to be By the way, if you wanted a pretty fast fly to get to this spot You just had to come to the ori mountain sky view tower and just fly over to this spot Okay, pretty simple. It's right over here right by tarry town This is the spot spot you'd go to and fly here I'm just going to be a little cheap at the end of the video because at this point you all can see that Marking on your map. So just go ahead and approach your final tier of this game So if you look at your adventure log, you're going to notice that all the adventures are incomplete and that you're missing the first one Go ahead and click on this video. If you do not have the first one unlocked This is going to be about the master sword and getting it early But if you haven't gotten the master sword and watch my videos, then you won't have cutscene one unlocked So go ahead and click on this video right here


Hey everybody, welcome back to the haul video portion of a week in geek them today We're gonna be talking about all the geeky stuff I acquired throughout the month of September an interesting month my birthday month I went a little wild getting some random items that you'll see in this video Also some things that were gifts did not arrive. So you'll see them later. Kind of works like that. All right Let's begin with some manga goodness here. We have die dark volume 2 Preordered this before release date and they were short on stock I guess so I never got it and I had to wait I think a full month for them to restock at right stuff which kind of defeats the purpose of pre-ordering But whatever next up here We have the third deluxe edition of blade of the immortal and now that I have three of these bad boys I can get my reading on when it comes to blade of the immortal I was waiting for this one to have a good chunk of material to sink my teeth into and Here we have the final volume of demons layer volume 23. I'm not gonna show anything from the inside I don't want to spoil it for you guys if you've never read it or if you're reading it It wouldn't be proper for me to spoil that demon slayer just like that, but I really enjoyed it and I am Uploading very soon a review video on it. So look out for that Okay, so here we have an epic haul when it comes to Shigeru Mizuki So this is the second volume of kitado, but the art as always looks impeccable looks amazing I love it so much and just the artistry involved and the significance of the story and what Mizuki did and and revolutionizing Storytelling not just for kids but for all ages With his yokai interpretations and stories and all that stuff I just had to have it as part of my collection. So that's volume two followed by volume three volume four five six and volume seven So, yeah, I went ahead and picked up everything in one swoop So I can do a proper Readthrough without having to worry about ordering more volumes and waiting for them to arrive I do know there are chapters missing and I am actually missing the oversized or the deluxe edition kitado book from The same publisher drawn in quarterly that is out of print and I missed the train on that one So I'm actively looking for that excited to get my hands on it eventually, but for now these Seven volumes will suffice. I love the spine designs. They look really cool and just yeah getting to Read the kitado adventures is a delight and a treat in 2021 Speaking of delight One of the most important works From japan got adapted into manga by of course Shigeru Mizuki. This is tono monogatari I still haven't cracked it open yet, but looking at the drawings here and the visuals This just looks amazing Stunning detail Really wonderful facial expressions. I can't wait to do a proper reading of this and and make a video for you guys I am upgrading my berserk volumes to the deluxe edition. So here we have volume eight of berserk with Wonderful art as usual from the late awesome epic kintaro miura as well as The posters which I did not know we were going to get posters. That is really awesome Good for good for dark horse. That is really cool. They look stunning I'm probably not going to take them out, but it's really nice to see that attention to detail From the north america and publishing side of things And just like with kitado, I went ahead and got everything that I was missing from villain saga Well, actually as of this recording, I'm missing the latest volume, which would be volume 12 of the deluxe hard covers from kudansha I've only read the first four Which corresponds to the first season of the anime. So I don't really know what I am looking at I'm looking forward to all these adventures and hopefully talking about it with you guys on this channel So, yeah, I'm more villain saga Here we have volume 18 of dr. Stone as of this video. It is currently entering its final arc So i'm excited to see what happens Legend of zelda twilight princess volume nine. I heard this Manga was ending. I don't know if it's going to be like two or three more volumes, but i'm excited um I love the game and just seeing the art represented in this format is awesome Here we have my hero academia volume 29. I desperately need to catch up I think the last one I read as of this video was Volume 23 So, yeah, I'm a little behind on all things my hero academia, but this looks really cool v stars volume 14 with the awesome yaya in the cover right here Really interested To see where the plot is going. I really enjoyed volume 13 or volume 12 and 13 Those were some of my favorites It opens up so many possibilities and the world building aspect of v stars that I really appreciated that maizani koku collector's edition volume 5 I said I was going to read this a while ago and I haven't started but I got five volumes in so I might as well start reading right Just one graphic novel here. We have kill six billion demons volume four. I really enjoy this indie comic You can read it online for free. I just wanted to support the physical releases um So if you want to check out my overall impressions and thoughts on the first volume, I have a video on the channel I'm going to link it at the end of this whole video. So, yeah Time for some anime goodness. I wanted to pick up some yokai themed movies stuff. I haven't watched yet Here is a letter to momo Looking forward to it sounds really interesting and of course, uh Really a creative character designs right there. Here we have fates day night heavens feel Part three spring song. This is the end of heavens feel the route the third route from the original fates day night and It's an anteplex release. I don't support them anymore but I had the previous two so I had to complete the set I guess and For such an expensive movie it really sucks and you get a broken jewel case Nice nice going there guys Here are some shots of the three movies all together with the spines and the front covers and my Fate collection. I completed the original fate series I don't really care for the spin-offs Or the you know apocrypha and grand order and all that stuff. I'm just I'm good with the the original series Continuing on with the haul and I've got some live action blu-rays for you guys Here we have howl from beyond the fog from dais ke sato Now the thing is I remember this being a Kickstarter or an indiegogo or something like that. It was a crowd-funded thing and It sold out. I think it was like a thousand something copies on blu-ray But it did so well and people showed interest and and they wanted more so they did one more Reprint and that's where I come in. So this is the second printing that I got Really interesting. I love that it's made with puppetry and it's uh It's a kaiji movie technically so hell. Yeah, I'm gonna add it to my collection And that cool matt franc cover art looks awesome And it came with a poster which you're seeing here and it looks really cool as well Speaking of kaiju. I forgot I needed this here is the host. So my idea is to build like an essential 101 shelf of kaiju movies not just toho and Godzilla but other monsters from other Countries and their movies and all that stuff and this is one that I really wanted to add sort of to boost my uh Korean Repertoire on my shelf Zaram 2 I'm a big fan of the show. I remember the anime back in the day And this was on sale couldn't pass it up. It sucks that we don't have the first one on blu-ray I think the I think they're working on it to Free that license up to get a blu-ray release So I'll be uh happy to get that when it's out And something that I've been wanting to get For two ever since they made the announcement back in the summer of 2019 I've wanted this set and I got it as a birthday gift So here is the criterion collection of the showa era Godzilla set. I know it's nothing new It's been out for a while, but I finally got it. I finally got enough cash to Get it and obviously I took advantage of the summer sale And for some reason it's still on sale Maybe they just want to get rid of it and I went ahead and ordered it from amazon half off So that was exciting. So yeah continuing on with the Movie portion or movie home. I got Matango Essentially I am going after a complete Toho monster horror sci-fi set from Early 60s and 70s. So I had to get Matango You know classic beloved horror movie if you like weird mushroom people followed by Atragon which had the first appearance of manda of very famous serpentine kaiju And I'm really excited about that. I Also got frankenstein conquers the world franken or frankenstein versus barragon I am missing war of the gargantua's That's expensive and I am missing space amoeba varan And two others I can't remember right now They're not terribly expensive unlike a gargantua's, but they're not cheap either That's why I haven't gotten them yet, but all in due time And finally folks video games just two copies here today on this haul We got for gamecube a game that I've always wanted to own I've played it before but I never owned it. It is the first Beautiful joe I could have waited because I know that some people are wishing we get the trilogy on switch But I just wanted to own the gamecube game because gamecube is awesome One of my favorite systems. So yeah when I hadn't picked it up And to finish things off. We got a switch game here.  So I'm like, hey, I'll take it Happy birthday, right? So thank you so much, buddy. This this means a lot and I'm a huge pokemon fan. It's my favorite video game franchise after metroid And I never played the original version for the wii u So now I am happy to own this for the switch and I'm going to play it I don't know. Maybe I'll stream some of it. Maybe not. Who knows, but I'm going to play it It looks awesome. Can't wait to try that out. So that's it everybody That's the haul for september 2021 an interesting one. So thank you everybody. Thank you for subscribing being a part of a weekend geek them for liking commenting All that fun stuff. If you want me to review anything from this haul video, let me know in the comment section down below All right, I gotta go. Thank you everybody for tuning in. Stay safe. God bless Catch you guys on the next video


The Climate Adaptation Financing Facility CAF Business Recovery Program was launched Friday, November 20, 2020 as the Government of St. Lucia continues to roll out incentives from the Economic Recovery and Resilience Plan. Prime Minister Hon. Alan Shastney earlier this year announced the Economic Recovery and Resilience Plan in a move to stimulate the economy by focusing on six pillars which will support, promote and protect the economy. The COVID-19 CAF Business Recovery Program will provide a blended grant loan facility to support businesses via the St. Lucia Development Bank with a focus on business continuity and recovering from the COVID-19 pandemic and to assist with climate resilience improvement. We recognize that St. Lucia as an island nation has, is vulnerable to all natural disasters and right now we see we've seen the impact of COVID on us and what we have been able to achieve through months of negotiations back and forth with the World Bank, the Ministry of Economic Development and Finance and the St. Lucia Development Bank is remarkable for us to be at this stage. The funding was a concessionary loan to the government of St. Lucia from the Climate Investment Fund and the pilot program for the climate resilience as part of the Disaster Vulnerability Risk Reduction Program, DVRP. According to the St. Lucia Chamber of Commerce, Industry and Agriculture Executive Director Brian Luizzi, the micro, small and medium enterprises community is on the front line of this economic crisis on account of their pre-existing structural vulnerabilities, particularly their inability to access credit and liquidity. He welcomed the opportunity for the local business community to access financial relief and support. Very early on in the crisis, the Chamber recognized that the MSMEs would be severely affected and we had urged the government that in its efforts to find the funding that we knew the country would require that the needs of the private sector and the MSME in particular should not be forgotten. Therefore, this initiative and project is extremely welcomed. Present at the loan ceremony was the Minister for Economic Development, Honourable Guy Joseph and PS for the Department of Finance, Miss Esther Rigabet and joining via Zoom was World Bank Program Leader for Sustainable Development and Infrastructure in the Caribbean, Vikram Khatrin. Prime Minister Shasne thanked the World Bank for their flexibility and seen the need to repurpose funds amidst the COVID-19 crisis and asked the private sector to access the support not only to help with liquidity but to help build resilience for future shocks brought on by the ever-present threat of climate change. The World Bank has been a constant support to St. Lucia during this crisis by allowing St. Lucia to repurpose program funds to better respond to the COVID pandemic where possible and the Victoria Hospital is another classic example of that. This nimbleness and agility with which the bank has operated over the past six months is certainly worthy of recognition and commendation. I urge the private sector to take full advantage of this opportunity not simply to access liquidity but also to build resilience in your business for future crisis and similar nature. I want to say that announcing this here today is only the first step and I'm really hoping that part of this initiative will be to have town hall meetings in the different constituencies with small businesses and involving local government to get the word out as much as possible and to assist persons in being able to prepare the paperwork for the application of these loans. So the work only begins today. More information about this loan grant facility can be accessed through the St. Lucia Development Bank via telephone number 456 7532 or visit their website at www.sldb.lc reporting for the office of the Prime Minister. I am Danielle Dubois.