← Înapoi la Urmăritori

Cel mai recent articol

Ultima verificare

Urmăritori 0 urmăritori
Articole: 160
  1. Note: all analysis and code samples used in this post correspond to the v3.3.0 release of Zephyr.

  2. In the last two posts in the RISC-V Bytes series we have looked at a bootloader for the ESP32-C3, then built a Zephyr application that was loaded by it.

  3. In the most recent post in the RISC-V Bytes series, we had our first experience with real hardware, exploring the bootloader on an ESP32-C3-DevKitC-02 module.

  4. I recently acquired an ESP32-C3-DevKitC-02 module, and, as I tend to do, jumped right into reading about how the system boots and how the (pretty good!)

  5. Upbound reached General Availability on Tuesday and today is my last day at the company.

  6. Don’t have time to read this post?

  7. In our most recent post in the Kubernetes API Server Adventures series we took a look at the storage interface and explored the only in-tree implementation: etcd3.

  8. Like most API servers, a, if not the, primary function of the Kubernetes API Server is to ingest data, store it, then return it when requested.

  9. Kubernetes is comprised of a variety of components, yet most end-user interaction with the system flows through the API Server.

  10. Operating systems do great work, but sometimes they need a little bit of help to know when to switch from one task to another.

  11. I'm on Mastodon

    Twitter has been a huge part of my online community, but it has become untenable as a platform.

  12. In our last post in the RISC-V Bytes series, I briefly alluded to the proposal to switch the Go Application Binary Interface (ABI) from a stack-based calling convention to a register-based calling convention.

  13. If you write any code that deals with manual memory management, you are likely familiar with the concept of a “use after free” bug.

  14. Today’s @risc_v Tip: If cross-compiling a dynamically linked program, then executing using binfmt_misc, you’ll need to both: Inform the OS where the dynamic linker resides (or invoke directly) Inform dynamic linker where other shared libraries reside (LD_…

  15. Sandbox Programmers

    As a relatively young person in the technology industry who is interested in low-level software and designing hardware, but spends most of my day job working on backend and distributed systems, I frequently find myself lamenting the fact that many folks in

  16. The following is an aggregation of a Twitter thread I posted on April 14th, 2022.

  17. I usually write about deep technical topics, frequently going into extreme detail about how systems work.

  18. Sometimes I hear folks in the Crossplane community ask if they can just use Helm instead of opting into our package manager.

  19. This is part of a series on the blog where we explore RISC-V by breaking down real programs and explaining how they work.

  20. Tonight’s @risc_v Tip: The A extension defines 2 types of instructions for atomic operations: load-reserved/store-conditional (LR/SC) and atomic fetch-and-op (AMO).

  21. Today’s @risc_v Tip: The second PPO rule defines “Same-Address Load-Load” ordering.

  22. Tonight’s @risc_v Tip: The first rule in RVWMO Preserved Program Order falls under the Overlapping-Address Orderings category and ensures that any loads or stores to a memory address are ordered before a subsequent store to an overlapping memory address.

  23. RISC-V Weak Memory Ordering

    Today’s @risc_v Tip: RISC-V defines its memory model (RVWMO) in the context of 3 orderings: Program Order: order of ops performed by a single hart Global Memory Order: order of ops performed by all harts Preserved Program Order: subset of program order re…

  24. The Zmmul Extension

    Tonight’s @risc_v Tip: The Zmmul extension species only the multiplication instructions from the M extension, allowing constrained RISC-V implementations to opt not to support division.

  25. Today’s @risc_v Tip: Instruction-Address-Misaligned exceptions can occur when a control transfer instruction (e.g. branch / jump) provides a misaligned target.

  26. First @risc_v Tip of 2022!

  27. Today’s @risc_v Tip: Another new extension in the v1.12 Privileged Spec is “NAPOT Translation Continuity” (Svnapot), which allows a PTE to indicate a 64 KiB range with consistent “flags” (bits [5:0]).

  28. Today’s @risc_v Tip: A new version of the RISC-V Privileged Architecture (v1.12) was released on Dec 3rd.

  29. Today’s @risc_v Tip: The Zifencei extension defines one instruction, FENCE.I, which orders memory writes and instruction fetches.

  30. Today’s @risc_v Tip: The FENCE instruction is defined as part of the base ISA and allows for explicit ordering of instructions prior to (“predecessor set”) and following (“successor set”).

  31. This is part of a series on the blog where we explore RISC-V by breaking down real programs and explaining how they work.

  32. Non-Maskable Interrupts

    Tonight’s @risc_v Tip: Implementations may define an arbitrary number of Non-Maskable Interrupts (NMIs).

  33. Christmas @risc_v Tip: The Zicsr extension defines instructions for clearing and setting CSR bits, which are abstracted by the pseudoinstructions csrc and csrs.

  34. 4-Byte Aligned Trap Vectors

    Today’s @risc_v Tip: The trap vector BASE address CSRs (mtvec / stvec) can use the lowest two bits for MODE because the BASE address must be 4-byte aligned (i.e. lowest two bits = 00).

  35. ld Default Entry Point

    Today’s @risc_v Tip: If using ld as your linker, a global symbol defined as start will take precedence over earlier symbols in your .text section for program entry point when explicit ENTRY is not defined in your script or via -e flag on the command line.

  36. Pipelined Trap Precision

    Today’s @risc_v Tip: Traps become more complicated in a pipelined implementation if exceptions occur after subsequent instructions have been issued.

  37. SiFive P650

    Tonight’s @risc_vTip: Understanding marketing material for processors can be confusing.

  38. Today’s @risc_v Tip: Regularity is a key design principle of RISC-V and has a large impact on implementation complexity.

  39. Atomicity PMAs

    Tonight’s @risc_v Tip: Atomicity Physical Memory Attributes (PMAs) specify support for atomic instructions described in the A extension in the Unprivileged Spec for a given range.

  40. Tonight’s @risc_v Tip: Physical Memory Attributes (PMAs) define the capabilities of a given address range.

  41. Today’s @risc_v Tip: The address of a Control and Status Register (CSR) encodes access and privilege level in the top 4 bits.

  42. Today’s @risc_v Tip: Today’s tip comes courtesy of the OpenTitan (a @lowRISC project) RISC-V assembly style guide.

  43. Tonight’s @risc_v Tip: MIT’s xv6 teaching OS is a great introduction to RISC-V.

  44. Interrupt Controllers

    Tonight’s @risc_v Tip: RISC-V contains a few interrupt controller specs, each providing additional functionality over basic privilege-based preemption: Core-Local Interrupt Controller (CLIC) Platform-Level Interrupt Controller (PLIC) Advanced Interrupt Ar…

  45. The Hypervisor Extension

    Today’s @risc_v Tip: The RISC-V Hypervisor extension recently reached v1.0 and was ratified.

  46. Tonight’s @risc_v Tip: Come join me (virtually or in person) on Monday to kick off #RISCVSummit!

  47. Tonight’s @risc_v Tip: The Supervisor Trap Base Address CSR (stvec) indicates the location of the Supervisor (S) trap handler(s).

  48. Tonight’s @risc_v Tip: Supervisor (S) mode has a dedicated memory-management (mm) fence instruction (SFENCE.VMA) that ensures visible stores are ordered before subsequent implicit references to mm data structures.

  49. Sv32 Megapages

    Tonight’s @risc_v Tip: Sv32 supports a 2-level page table, but any Page Table Entry (PTE) may be a leaf.

  50. Tonight’s @risc_v Tip: Sv32 uses a two-level page table to enable virtual memory.