JZ2440筆記:Nor FLASH驅動程序

(1)測試原有的驅動:

make menuconfig修改physmap-flash驅動配置:起始0,大小0x100000,位寬2,make modules后拷貝過去測試:

# insmod physmap.ko
physmap platform flash device: 01000000 at 00000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
?Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
cmdlinepart partition parsing not available
RedBoot partition parsing not available
# ls /dev/mtd*
/dev/mtd0 ? ? ? /dev/mtd0ro ? ? /dev/mtdblock0
# cat /proc/mtd
dev: ? ?size ? erasesize ?name
mtd0: 00200000 00010000 "physmap-flash.0"

# rmmod physmap.ko
Device 'physmap-flash.0' does not have a release() function, it is broken and must be fixed.
WARNING: at drivers/base/core.c:107 device_release()
不管它

(2)vi s3c_nor.c

#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>
#include <asm/io.h>static struct map_info *s3c_nor_map;
static struct mtd_info *s3c_nor_mtd;static int s3c_nor_init(void)
{s3c_nor_map = kzalloc(sizeof(struct map_info), GFP_KERNEL);s3c_nor_map->name = "s3c_nor";s3c_nor_map->phys = 0;s3c_nor_map->size = 0x1000000;s3c_nor_map->bankwidth = 2;s3c_nor_map->virt = ioremap(s3c_nor_map->phys, s3c_nor_map->size);simple_map_init(s3c_nor_map);printk("use cfi_probe\n");s3c_nor_mtd = do_map_probe("cfi_probe", s3c_nor_map);if(!s3c_nor_mtd){printk("use jedec_probe\n");s3c_nor_mtd = do_map_probe("jedec_probe", s3c_nor_map);}if(!s3c_nor_mtd){iounmap(s3c_nor_map->virt);kfree(s3c_nor_map);return -EIO;}return 0;
}static void s3c_nor_exit(void)
{iounmap(s3c_nor_map->virt);kfree(s3c_nor_map);
}module_init(s3c_nor_init);
module_exit(s3c_nor_exit);
MODULE_LICENSE("GPL");

測試驅動:

# insmod s3c_nor.ko
use cfi_probe
s3c_nor: Found 1 x16 devices at 0x0 in 16-bit bank
?Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
?

(3)vi s3c_nor.c(添加分區)

static struct map_info *s3c_nor_map;
static struct mtd_info *s3c_nor_mtd;static struct mtd_partition s3c_nor_parts[] = {[0] = {.name   = "bootloader_nor",.size   = 0x00040000,.offset	= 0,},[1] = {.name   = "root_nor",.offset = MTDPART_OFS_APPEND,.size   = MTDPART_SIZ_FULL,}
};static int s3c_nor_init(void)
{s3c_nor_map = kzalloc(sizeof(struct map_info), GFP_KERNEL);s3c_nor_map->name = "s3c_nor";s3c_nor_map->phys = 0;s3c_nor_map->size = 0x1000000;s3c_nor_map->bankwidth = 2;s3c_nor_map->virt = ioremap(s3c_nor_map->phys, s3c_nor_map->size);simple_map_init(s3c_nor_map);printk("use cfi_probe\n");s3c_nor_mtd = do_map_probe("cfi_probe", s3c_nor_map);if(!s3c_nor_mtd){printk("use jedec_probe\n");s3c_nor_mtd = do_map_probe("jedec_probe", s3c_nor_map);}if(!s3c_nor_mtd){iounmap(s3c_nor_map->virt);kfree(s3c_nor_map);return -EIO;}add_mtd_partitions(s3c_nor_map, s3c_nor_parts, 2);return 0;
}static void s3c_nor_exit(void)
{del_mtd_partitions(s3c_nor_map);iounmap(s3c_nor_map->virt);kfree(s3c_nor_map);
}

測試驅動:

# insmod s3c_nor.ko
use cfi_probe
s3c_nor: Found 1 x16 devices at 0x0 in 16-bit bank
?Amd/Fujitsu Extended Query Table at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 2 MTD partitions on "s3c_nor":
0x00000000-0x00040000 : "bootloader_nor"
0x00040000-0x00200000 : "root_nor"
# ls /dev/mtd*
/dev/mtd0 ? ? ? /dev/mtd1 ? ? ? /dev/mtdblock0
/dev/mtd0ro ? ? /dev/mtd1ro ? ? /dev/mtdblock1
Linux系統中/dev/mtd與/dev/mtdblock的區別 - hnrainll - 博客園 (cnblogs.com)

可以繼續格式化、掛接、建立文件!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20654.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#面:解釋什么是viewstate,能否禁用?是否所用控件都可以禁用

在C#中&#xff0c;ViewState是 ASP.NET Web Forms中的一個重要概念。它用于在Web應用程序中跨頁面請求之間保存和恢復頁面的狀態數據。ViewState的主要目的是在頁面回發&#xff08;postback&#xff09;期間保持頁面上的控件狀態&#xff0c;以便在頁面重新加載后能夠正確地還…

addEventListener()方法中的幾個參數,以及作用

addEventListener() 方法是 JavaScript 中用于處理指定元素的指定事件的函數。它有三個參數&#xff1a; type&#xff08;必需&#xff09;&#xff1a;一個字符串&#xff0c;指定要監聽的事件名。 listener&#xff08;必需&#xff09;&#xff1a;一個實現了 EventListen…

【第1章】SpringBoot實戰篇之注冊接口

文章目錄 前言一、代碼部分1. User2.UserMapper13. UserSerivce4. UserController15. Result 二、測試1.注冊2.再次注冊 總結 前言 下面介紹用戶注冊接口。 一、代碼部分 1. User package org.example.springboot3.bigevent.entity;import com.baomidou.mybatisplus.annotat…

開發板uboot與virtualbox虛擬機、windows11網絡互通

環境&#xff1a;virtualbox中ubuntu22.04.4&#xff0c;開發板通過網線再經過拓展塢usb網卡跟windows11連接。連接如下&#xff1a; 1、關閉windows防火墻(重要) 2、先在VirtualBox的工具選項創建兩個網絡【僅主機(Host-Only)網絡】和【NAT網絡】 僅主機(Host-Only)網絡的ip:…

Linux下Qt Creator無法輸入中文(已解決)

1. 首先確保安裝了搜狗輸入法&#xff0c;且能正常運行。 2.克隆源碼到本地。 git clone https://gitcode.com/fcitx/fcitx-qt5.git 3.檢查Qt Creator版本&#xff0c;如下圖所示&#xff0c;為基于Qt6的。 4. 進入源碼目錄&#xff0c;建立build文件夾&#xff0c;修改CMak…

并發任務的進化之旅

An evolutionary journey of multitasking 多重任務的進化之旅 In the beginning, computers had one CPU that executed a set of instructions written by a programmer one by one. No operating system (OS), no scheduling, no threads, no multitasking. This was how …

js實現基礎購物車的制作

功能需求&#xff1a; 1.點擊添加商品按鈕會出現三個輸入框&#xff08;名稱&#xff0c;價格&#xff0c;數量那三格&#xff0c;以及確認和取消按鈕&#xff09;。 2.點擊確認后所輸入的值會自動形成一行添加到表格中 3.點擊編輯按鈕時&#xff0…

css動態導航欄鼠標懸停特效

charset "utf-8"; /*科e互聯特效基本框架CSS*/ body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none} h1, h2, h3, h4, h5, h6{font-size:12px…

8、資源操作 Resource

目錄 8.1、Spring Resources概述補充&#xff1a;什么是 low-level 資源&#xff1f;1. 文件系統資源2. 類路徑資源3. URL資源4. 內嵌資源5. InputStream資源6. ServletContext資源示例代碼結論 8.2、Resource接口8.3、Resource的實現類8.3.1、UrlResource訪問網絡資源1&#x…

LIO-EKF: 運行數據UrbanNav與mid360設備詳細教程

一、代碼連接 代碼下載連接&#xff1a; YibinWu/LIO-EKF: Maybe the simplest LiDAR-inertial odometry that one can have. (github.com) 編譯步驟&#xff1a; cd srcgit clone gitgithub.com:YibinWu/LIO-EKF.gitcatkin_makesource devel/setup.bash 運行步驟&#xff1a; …

為什么要保持方差為1

1.數值穩定性&#xff1a; 在機器學習和深度學習中&#xff0c;維持激活函數輸入的方差在一個合理范圍內&#xff08;如1&#xff09;是很重要的&#xff0c;這有助于防止在訓練過程中發生梯度消失或梯度爆炸的問題。如果方差過大或過小&#xff0c;經過多層網絡后輸出結果的方…

java并發處理機制

在Java中&#xff0c;并發處理機制主要是通過線程來實現的。Java提供了豐富的類和接口來支持多線程編程&#xff0c;主要集中在 java.util.concurrent 包中。以下是一些關鍵的并發處理機制&#xff1a; 1.線程創建&#xff1a;可以通過繼承 Thread 類或實現 Runnable 接口來創建…

公園【百度之星】/圖論+dijkstra

公園 圖論dijkstra #include<bits/stdc.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pii; vector<ll> v[40005]; //a、b、c分別是小度、度度熊、終點到各個點的最短距離 ll a[40005],b[40005],c[40005],dist[40005],st[40005]; void…

原碼、反碼和真值都不存在!

文章目錄 補碼的理解十進制計算二進制計算 補碼和真值換算數制轉換負數補碼轉真值負數真值轉補碼 注&#xff1a;均來自 做而論道 答主的理解。 補碼的理解 在計算機系統中&#xff0c;根本就沒有原碼和反碼&#xff0c;真值也是不存在的。在計算機系統中&#xff0c;并不使用…

java 遠程調試

1.遠程啟動時 jdk1.8-32\jre\bin\java.exe -Dfile.encodingUTF-8 -Djava.library.pathlib -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -jar local-com.yuetai.service-0.0.1-SNAPSHOT.jar --spring.config.locationapplication.yml 2.本地調試項目連接遠…

2024-06-01 Win 11 升級 TPM 2 問題

點擊 Windows 更新&#xff0c;遇到報錯&#xff0c;說是不支持 CPU 和 TPM 等&#xff0c;先是朋友給了一個鏈接文章&#xff0c;說是可以繞過&#xff0c;嘗試后&#xff0c;只是少了 CPU 的報錯&#xff0c;但 TPM 2 過不了。 后來在網上找到這篇文章&#xff0c; 先試了幾…

JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測

JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測 目錄 JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測分類效果基本介紹程序設計參考資料 分類效果 基本介紹 1.Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多…

一維時間序列信號的小波模極大值分解與重建(matlab R2018A)

數學上稱無限次可導函數是光滑的或沒有奇異性&#xff0c;若函數在某處有間斷或某階導數不連續&#xff0c;則稱函數在此處有奇異性&#xff0c;該點就是奇異點。奇異性反映了信號的不規則程度&#xff0c;因為信號的奇異點和突變部分往往攜帶者重要信息&#xff0c;因此信號的…

JDK1.8新特性1

JDK1.8新特性1 JDK1.8新特性&#xff1a;Lambda表達式&#xff1a;使用&#xff1a;無參數無返回值&#xff1a;單參數無返回值&#xff1a;多參數無返回值&#xff1a;多參數有返回值&#xff1a; 案例&#xff1a;案例1&#xff1a;案例2&#xff1a;案例3&#xff1a; 函數式…

代碼隨想錄訓練營Day 42|力扣62.不同路徑、63. 不同路徑 II

1.不同路徑 代碼隨想錄 視頻講解&#xff1a;動態規劃中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路徑_嗶哩嗶哩_bilibili 代碼&#xff1a; class Solution { public:int uniquePaths(int m, int n) {// dp[i][j] 表示從起點走到坐標為i&#xff0c;j的地方…