• 置顶

    ToDoList

    Here’s something encrypted, password is required to continue reading.

  • bss 字段说明

    bss 段是指同来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清零。bss 的大小不会被计入 rom size。 12345678910111213141516============================================================================== Code (inc. data) RO Da...
  • STM32MPU TF-A 编译

    TF-A 是 Arm Cortex-A trust firmware 的简称,是第一级的启动加载器(FSBL)。介于 Bootrom 和 U-boot 之间。 一、前提条件 Linux Host PC SDK 二、编译 启动环境变量1source <SDK installation directory path>/environment-setup-<target>...
  • STM32MPU 开发环境搭建

    嵌入式设备通常无法自己编译自己运行的程序,这时候就需要有一台主机来负责编译程序。但是主机的平台和嵌入式平台是不一样的,芯片的指令集也不一样。这时候就需要用到交叉编译,也就是在主机上安装嵌入式平台的 SDK,来进行编译开发。 一、前提条件 Linux 环境(虚拟机也可以) SDK, 我这里用的版本是en.SDK-x86_64-stm32mp1-openstlinux-6.1-yocto-mic...
  • STM32MP157A-DK1 点亮LED

    STM32MP157A-DK1 是一款基于 STM32MP157AAC3 MPU 芯片的开发板。这是一款 MPU 芯片,它和传统的 STM32 系列 MCU 不同,其开发方式有很大的区别。下面讲解如何点亮板载的 LED 灯。 一、系统安装需要做的准备工作是 安装 STM32CubeProgrammer 这款软件 下载系统文件,例如:en.flash-stm32mp1-openstlinux...
  • 使用 Beancount 管理 ESPP

    在过去的几年时间里,我一直在使用 Beancount 来记账,我之前也有写过一篇博客 来介绍 Beancount 的基础用法。今天,打算写一篇稍微进阶的文章,来纪录使用 Beancount 管理 ESPP 的买卖。

  • Pixel 3 QUSB_BULK_CID issue

    缘起

    Pixel 3 是我最喜欢的手机之一,但却是最折腾我的手机。我在 19 年以 2560 元的价格在某宝上购入,做为主力机使用,它小巧的体积以及出色的手感深得我心。

    然而在用了不到 9 个月的时候,突然就无法开机。在这之前的一个周末我刚给它升级了最新的 Andriod 11 系统,彼时才刚刚发布,仍出于开发者预览版,能够升级成功我很开心,感受到了作为谷歌亲儿子的开心。这个系统引入了一个敲击后壳的功能,双击后壳可以关闭屏幕或者打开某个应用,还有就是状态栏可以养一个电子宠物。可是刚过两天,中午吃过午饭后手机突然就无法开机了。刚开始还不知道是怎么回事,尝试过充电,屏幕也无法点亮,无线充开始起来也没有反应,无法进 bootloader。开始我一度以为是因为我敲击后壳的震动导致内部元件错位而造成的问题,直到后来我在网上看到了越来越多的人也遇到了同样的不开机的问题。

    20年 8 月的周末我把手机拿去华强北,找了几家店,都说可以修,最后选择在路口的一家店花费了 1 个多小时,260块钱恢复了,但是这次维修让无线充电功能失效了。维修手机的同一天,我下单了全新的三星 Note20 Ultra。店家说可以保修三个月,现在不太记得他当时和我说的手机损坏的地方了,大概是电源芯片一类的,不知道这是不是只是一个说辞。修好后的刷机数据一点也没有丢失,这也是我特别不理解的地方。后面由于手机再次损坏,拆机以后发现手机硬盘部分的防护罩被割开,应该是做过更好,这也后下文将要提到的两年后谷歌官方给出的声明稳和。但我不理解的地方在于,既然硬盘损坏并且已经更换了新的硬盘,那么我的数据又是如何做到不丢失的呢?是否有工具可以在损坏的硬盘上恢复数据并写入新的硬盘吗?

    flash

  • 2022年年总结

    Here’s something encrypted, password is required to continue reading.

  • c# virtual

    Virtual

    The virtual keyword is used to modify a method, property, indexer, or event declaration and allow for it to be overridden in a derived class.

    When a virtual method is invoked, the run-time type of the object is checked for an overriding member. The overriding member in the most derived class is called, which might be the original member, if no derived class has overridden the member.

    By default, methods are non-virtual. You cannot override a non-virtual method.

  • c# async await

    Asynchronous programming
    Task asynchronous programming model

    An async method runs synchronously until it reaches its first await expression, at which point the method is suspended until the awaited task is complete. In the meantime, control returns to the caller of the method, as the example in the next section shows.

12315